diff --git a/src/Machine-Learning/LSTM-python/src/.gitignore b/src/Machine-Learning/LSTM-python/src/.gitignore deleted file mode 100644 index f7275bb..0000000 --- a/src/Machine-Learning/LSTM-python/src/.gitignore +++ /dev/null @@ -1 +0,0 @@ -venv/ diff --git a/src/Machine-Learning/LSTM-python/src/.python-version b/src/Machine-Learning/LSTM-python/src/.python-version deleted file mode 100644 index 21af950..0000000 --- a/src/Machine-Learning/LSTM-python/src/.python-version +++ /dev/null @@ -1 +0,0 @@ -3.9.13 diff --git a/src/Machine-Learning/LSTM-python/src/requirements.txt b/src/Machine-Learning/LSTM-python/src/requirements.txt deleted file mode 100644 index 5cc8dc1..0000000 --- a/src/Machine-Learning/LSTM-python/src/requirements.txt +++ /dev/null @@ -1,13 +0,0 @@ -contourpy==1.3.0 -cycler==0.12.1 -fonttools==4.56.0 -importlib_resources==6.5.2 -kiwisolver==1.4.7 -matplotlib==3.9.4 -numpy==2.0.2 -packaging==24.2 -pillow==11.1.0 -pyparsing==3.2.1 -python-dateutil==2.9.0.post0 -six==1.17.0 -zipp==3.21.0 diff --git a/src/Machine-Learning/README.md b/src/Machine-Learning/README.md deleted file mode 100644 index 4de0e97..0000000 --- a/src/Machine-Learning/README.md +++ /dev/null @@ -1 +0,0 @@ -THis is a simple feed forward MLP and I want to make it a LSTM/GRU in pure C baby. diff --git a/src/Machine-Learning/LSTM-python/.gitignore b/src/MidasAgent/.gitignore similarity index 100% rename from src/Machine-Learning/LSTM-python/.gitignore rename to src/MidasAgent/.gitignore diff --git a/src/Machine-Learning/LSTM-python/src/LSTMDQN.log b/src/MidasAgent/DQN/LSTMDQN.log similarity index 100% rename from src/Machine-Learning/LSTM-python/src/LSTMDQN.log rename to src/MidasAgent/DQN/LSTMDQN.log diff --git a/src/Machine-Learning/LSTM-python/src/LSTMDQN.py b/src/MidasAgent/DQN/LSTMDQN.py similarity index 100% rename from src/Machine-Learning/LSTM-python/src/LSTMDQN.py rename to src/MidasAgent/DQN/LSTMDQN.py diff --git a/src/Machine-Learning/LSTM-python/src/dqnREADME.md b/src/MidasAgent/DQN/dqnREADME.md similarity index 100% rename from src/Machine-Learning/LSTM-python/src/dqnREADME.md rename to src/MidasAgent/DQN/dqnREADME.md diff --git a/src/Machine-Learning/LSTM-python/src/modular_version/__pycache__/args.cpython-39.pyc b/src/MidasAgent/DQN/modular_version/__pycache__/args.cpython-39.pyc similarity index 100% rename from src/Machine-Learning/LSTM-python/src/modular_version/__pycache__/args.cpython-39.pyc rename to src/MidasAgent/DQN/modular_version/__pycache__/args.cpython-39.pyc diff --git a/src/Machine-Learning/LSTM-python/src/modular_version/__pycache__/data_processing.cpython-39.pyc b/src/MidasAgent/DQN/modular_version/__pycache__/data_processing.cpython-39.pyc similarity index 100% rename from src/Machine-Learning/LSTM-python/src/modular_version/__pycache__/data_processing.cpython-39.pyc rename to src/MidasAgent/DQN/modular_version/__pycache__/data_processing.cpython-39.pyc diff --git a/src/Machine-Learning/LSTM-python/src/modular_version/__pycache__/dqn_callbacks.cpython-39.pyc b/src/MidasAgent/DQN/modular_version/__pycache__/dqn_callbacks.cpython-39.pyc similarity index 100% rename from src/Machine-Learning/LSTM-python/src/modular_version/__pycache__/dqn_callbacks.cpython-39.pyc rename to src/MidasAgent/DQN/modular_version/__pycache__/dqn_callbacks.cpython-39.pyc diff --git a/src/Machine-Learning/LSTM-python/src/modular_version/__pycache__/dqn_training.cpython-39.pyc b/src/MidasAgent/DQN/modular_version/__pycache__/dqn_training.cpython-39.pyc similarity index 100% rename from src/Machine-Learning/LSTM-python/src/modular_version/__pycache__/dqn_training.cpython-39.pyc rename to src/MidasAgent/DQN/modular_version/__pycache__/dqn_training.cpython-39.pyc diff --git a/src/Machine-Learning/LSTM-python/src/modular_version/__pycache__/environment.cpython-39.pyc b/src/MidasAgent/DQN/modular_version/__pycache__/environment.cpython-39.pyc similarity index 100% rename from src/Machine-Learning/LSTM-python/src/modular_version/__pycache__/environment.cpython-39.pyc rename to src/MidasAgent/DQN/modular_version/__pycache__/environment.cpython-39.pyc diff --git a/src/Machine-Learning/LSTM-python/src/modular_version/__pycache__/lstm_model.cpython-39.pyc b/src/MidasAgent/DQN/modular_version/__pycache__/lstm_model.cpython-39.pyc similarity index 100% rename from src/Machine-Learning/LSTM-python/src/modular_version/__pycache__/lstm_model.cpython-39.pyc rename to src/MidasAgent/DQN/modular_version/__pycache__/lstm_model.cpython-39.pyc diff --git a/src/Machine-Learning/LSTM-python/src/modular_version/__pycache__/resources.cpython-39.pyc b/src/MidasAgent/DQN/modular_version/__pycache__/resources.cpython-39.pyc similarity index 100% rename from src/Machine-Learning/LSTM-python/src/modular_version/__pycache__/resources.cpython-39.pyc rename to src/MidasAgent/DQN/modular_version/__pycache__/resources.cpython-39.pyc diff --git a/src/Machine-Learning/LSTM-python/src/modular_version/args.py b/src/MidasAgent/DQN/modular_version/args.py similarity index 100% rename from src/Machine-Learning/LSTM-python/src/modular_version/args.py rename to src/MidasAgent/DQN/modular_version/args.py diff --git a/src/Machine-Learning/LSTM-python/src/modular_version/data_processing.py b/src/MidasAgent/DQN/modular_version/data_processing.py similarity index 100% rename from src/Machine-Learning/LSTM-python/src/modular_version/data_processing.py rename to src/MidasAgent/DQN/modular_version/data_processing.py diff --git a/src/Machine-Learning/LSTM-python/src/modular_version/dqn_callbacks.py b/src/MidasAgent/DQN/modular_version/dqn_callbacks.py similarity index 100% rename from src/Machine-Learning/LSTM-python/src/modular_version/dqn_callbacks.py rename to src/MidasAgent/DQN/modular_version/dqn_callbacks.py diff --git a/src/Machine-Learning/LSTM-python/src/modular_version/dqn_training.py b/src/MidasAgent/DQN/modular_version/dqn_training.py similarity index 100% rename from src/Machine-Learning/LSTM-python/src/modular_version/dqn_training.py rename to src/MidasAgent/DQN/modular_version/dqn_training.py diff --git a/src/Machine-Learning/LSTM-python/src/modular_version/environment.py b/src/MidasAgent/DQN/modular_version/environment.py similarity index 100% rename from src/Machine-Learning/LSTM-python/src/modular_version/environment.py rename to src/MidasAgent/DQN/modular_version/environment.py diff --git a/src/Machine-Learning/LSTM-python/src/modular_version/lstm_model.py b/src/MidasAgent/DQN/modular_version/lstm_model.py similarity index 100% rename from src/Machine-Learning/LSTM-python/src/modular_version/lstm_model.py rename to src/MidasAgent/DQN/modular_version/lstm_model.py diff --git a/src/Machine-Learning/LSTM-python/src/modular_version/main.py b/src/MidasAgent/DQN/modular_version/main.py similarity index 100% rename from src/Machine-Learning/LSTM-python/src/modular_version/main.py rename to src/MidasAgent/DQN/modular_version/main.py diff --git a/src/Machine-Learning/LSTM-python/src/modular_version/resources.py b/src/MidasAgent/DQN/modular_version/resources.py similarity index 100% rename from src/Machine-Learning/LSTM-python/src/modular_version/resources.py rename to src/MidasAgent/DQN/modular_version/resources.py diff --git a/src/MidasAgent/DQN/output/FuturesPPO.log b/src/MidasAgent/DQN/output/FuturesPPO.log new file mode 100644 index 0000000..a106d7a --- /dev/null +++ b/src/MidasAgent/DQN/output/FuturesPPO.log @@ -0,0 +1,48 @@ +2025-03-26 03:01:52,506 - INFO - ===== Resource Statistics ===== +2025-03-26 03:01:52,506 - INFO - Physical CPU Cores: 28 +2025-03-26 03:01:52,506 - INFO - Logical CPU Cores: 56 +2025-03-26 03:01:52,507 - INFO - CPU Usage per Core: [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]% +2025-03-26 03:01:52,507 - INFO - No GPUs detected. +2025-03-26 03:01:52,507 - INFO - ================================= +2025-03-26 03:01:52,507 - INFO - Configured TensorFlow to use CPU with optimized thread settings. +2025-03-26 03:01:52,508 - INFO - Loading data from: data/MES2023Z.csv +2025-03-26 03:01:52,513 - ERROR - Unexpected error: Missing column provided to 'parse_dates': 'time' +2025-03-26 03:04:50,616 - INFO - ===== Resource Statistics ===== +2025-03-26 03:04:50,616 - INFO - Physical CPU Cores: 28 +2025-03-26 03:04:50,616 - INFO - Logical CPU Cores: 56 +2025-03-26 03:04:50,616 - INFO - CPU Usage per Core: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]% +2025-03-26 03:04:50,617 - INFO - No GPUs detected. +2025-03-26 03:04:50,617 - INFO - ================================= +2025-03-26 03:04:50,617 - INFO - Configured TensorFlow to use CPU with optimized thread settings. +2025-03-26 03:04:50,618 - INFO - Loading data from: data/MES2023Z.csv +2025-03-26 03:04:50,621 - ERROR - Unexpected error: Missing column provided to 'parse_dates': 'time' +2025-03-26 03:08:02,316 - INFO - ===== Resource Statistics ===== +2025-03-26 03:08:02,316 - INFO - Physical CPU Cores: 28 +2025-03-26 03:08:02,316 - INFO - Logical CPU Cores: 56 +2025-03-26 03:08:02,317 - INFO - CPU Usage per Core: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]% +2025-03-26 03:08:02,317 - INFO - No GPUs detected. +2025-03-26 03:08:02,317 - INFO - ================================= +2025-03-26 03:08:02,317 - INFO - Configured TensorFlow to use CPU with optimized thread settings. +2025-03-26 03:08:02,318 - INFO - Loading data from: data/MES2023Z.csv +2025-03-26 03:08:02,355 - INFO - Data columns after renaming: ['Date', 'Open', 'High', 'Low', 'Close', 'Volume'] +2025-03-26 03:08:02,383 - INFO - Data loaded and sorted successfully. +2025-03-26 03:08:02,383 - INFO - Calculating technical indicators... +2025-03-26 03:08:02,448 - INFO - Technical indicators calculated successfully. +2025-03-26 03:08:02,464 - INFO - Starting parallel feature engineering with 54 workers... +2025-03-26 03:08:03,331 - INFO - Parallel feature engineering completed. +2025-03-26 03:08:03,341 - INFO - Training sequences shape: (676, 15, 17) +2025-03-26 03:08:03,342 - INFO - Validation sequences shape: (144, 15, 17) +2025-03-26 03:08:03,342 - INFO - Testing sequences shape: (146, 15, 17) +2025-03-26 03:08:03,342 - INFO - Starting LSTM hyperparameter optimization with Optuna using 54 parallel trials... +2025-03-26 03:22:04,033 - INFO - Best LSTM Hyperparameters: {'num_lstm_layers': 2, 'lstm_units': 64, 'dropout_rate': 0.13619292923712067, 'learning_rate': 0.0030545284525912166, 'optimizer': 'Nadam', 'decay': 9.615099767236892e-05} +2025-03-26 03:22:04,553 - INFO - Training best LSTM model with optimized hyperparameters... +2025-03-26 03:24:28,296 - INFO - Evaluating final LSTM model... +2025-03-26 03:24:29,722 - INFO - Test MSE: 0.3437 +2025-03-26 03:24:29,722 - INFO - Test RMSE: 0.5862 +2025-03-26 03:24:29,722 - INFO - Test MAE: 0.4561 +2025-03-26 03:24:29,722 - INFO - Test R2 Score: 0.8620 +2025-03-26 03:24:29,722 - INFO - Directional Accuracy: 0.2759 +2025-03-26 03:24:30,013 - WARNING - You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. +2025-03-26 03:24:30,121 - INFO - Saved best LSTM model and scaler objects. +2025-03-26 03:24:30,150 - INFO - Starting PPO training... +2025-03-26 05:47:15,571 - INFO - PPO training completed and model saved. diff --git a/src/Machine-Learning/LSTM-python/src/output/LSTMDQN.log b/src/MidasAgent/DQN/output/LSTMDQN.log similarity index 87% rename from src/Machine-Learning/LSTM-python/src/output/LSTMDQN.log rename to src/MidasAgent/DQN/output/LSTMDQN.log index ffba986..4f8ff2a 100644 --- a/src/Machine-Learning/LSTM-python/src/output/LSTMDQN.log +++ b/src/MidasAgent/DQN/output/LSTMDQN.log @@ -104,3 +104,14 @@ 2025-03-06 20:54:21,265 - INFO - Scaled validation target shape: (3028,) 2025-03-06 20:54:21,265 - INFO - Scaled testing target shape: (3030,) 2025-03-06 20:54:21,265 - INFO - Starting LSTM hyperparameter optimization with Optuna using 54 parallel trials... +2025-03-06 23:10:28,345 - INFO - Best LSTM Hyperparameters: {'num_lstm_layers': 2, 'lstm_units': 96, 'dropout_rate': 0.18300207247480796, 'learning_rate': 0.0015024264996830019, 'optimizer': 'Nadam', 'decay': 6.153016040618131e-07} +2025-03-06 23:10:28,788 - INFO - Training best LSTM model with optimized hyperparameters... +2025-03-07 01:26:27,312 - INFO - Evaluating final LSTM model... +2025-03-07 01:26:29,772 - INFO - Test MSE: 0.0922 +2025-03-07 01:26:29,773 - INFO - Test RMSE: 0.3037 +2025-03-07 01:26:29,773 - INFO - Test MAE: 0.1935 +2025-03-07 01:26:29,773 - INFO - Test R2 Score: 0.9924 +2025-03-07 01:26:29,773 - INFO - Directional Accuracy: 0.4780 +2025-03-07 01:26:30,075 - WARNING - You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. +2025-03-07 01:26:30,135 - INFO - Saved best LSTM model and scaler objects (best_lstm_model.h5, scaler_features.pkl, scaler_target.pkl). +2025-03-07 01:26:30,135 - INFO - Training DQN agent: Attempt 1 with hyperparameters: {'lr': 0.001, 'gamma': 0.95, 'exploration_fraction': 0.1, 'buffer_size': 10000, 'batch_size': 64} diff --git a/src/MidasAgent/DQN/output/best_lstm_model.h5 b/src/MidasAgent/DQN/output/best_lstm_model.h5 new file mode 100644 index 0000000..dc9fc78 Binary files /dev/null and b/src/MidasAgent/DQN/output/best_lstm_model.h5 differ diff --git a/src/MidasAgent/DQN/output/best_ppo_model.zip b/src/MidasAgent/DQN/output/best_ppo_model.zip new file mode 100644 index 0000000..c3f0a8d Binary files /dev/null and b/src/MidasAgent/DQN/output/best_ppo_model.zip differ diff --git a/src/MidasAgent/DQN/output/lstm_actual_vs_pred.png b/src/MidasAgent/DQN/output/lstm_actual_vs_pred.png new file mode 100644 index 0000000..2f191e0 Binary files /dev/null and b/src/MidasAgent/DQN/output/lstm_actual_vs_pred.png differ diff --git a/src/MidasAgent/DQN/output/scaler_features.pkl b/src/MidasAgent/DQN/output/scaler_features.pkl new file mode 100644 index 0000000..6ba7b7b Binary files /dev/null and b/src/MidasAgent/DQN/output/scaler_features.pkl differ diff --git a/src/MidasAgent/DQN/output/scaler_target.pkl b/src/MidasAgent/DQN/output/scaler_target.pkl new file mode 100644 index 0000000..8c20d9f Binary files /dev/null and b/src/MidasAgent/DQN/output/scaler_target.pkl differ diff --git a/src/MidasAgent/PPO/LSTMPPO.py b/src/MidasAgent/PPO/LSTMPPO.py new file mode 100644 index 0000000..7be5685 --- /dev/null +++ b/src/MidasAgent/PPO/LSTMPPO.py @@ -0,0 +1,754 @@ +import os +import sys +import argparse +import numpy as np +import pandas as pd +import logging +from tabulate import tabulate +import matplotlib +matplotlib.use("Agg") +import matplotlib.pyplot as plt +import psutil +import GPUtil +import tensorflow as tf +from tensorflow.keras.models import Sequential, load_model +from tensorflow.keras.layers import LSTM, Dense, Dropout, Bidirectional +from tensorflow.keras.callbacks import EarlyStopping, ReduceLROnPlateau +from tensorflow.keras.losses import Huber +from tensorflow.keras.regularizers import l2 +from tensorflow.keras.optimizers import Adam, Nadam + +from sklearn.preprocessing import MinMaxScaler +from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score +import joblib +import optuna +from optuna.integration import KerasPruningCallback + +import gym +from gym import spaces +from stable_baselines3 import PPO +from stable_baselines3.common.vec_env import DummyVecEnv + +from multiprocessing import Pool, cpu_count +import threading +import time + +# Suppress TensorFlow logs beyond errors +os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' + +# ============================================================================= +# Resource Detection Functions +# ============================================================================= +def get_cpu_info(): + cpu_count_physical = psutil.cpu_count(logical=False) # Physical cores + cpu_count_logical = psutil.cpu_count(logical=True) # Logical cores + cpu_percent = psutil.cpu_percent(interval=1, percpu=True) + return { + 'physical_cores': cpu_count_physical, + 'logical_cores': cpu_count_logical, + 'cpu_percent': cpu_percent + } + +def get_gpu_info(): + gpus = GPUtil.getGPUs() + gpu_info = [] + for gpu in gpus: + gpu_info.append({ + 'id': gpu.id, + 'name': gpu.name, + 'load': gpu.load * 100, # Convert to percentage + 'memory_total': gpu.memoryTotal, + 'memory_used': gpu.memoryUsed, + 'memory_free': gpu.memoryFree, + 'temperature': gpu.temperature + }) + return gpu_info + +def configure_tensorflow(cpu_stats, gpu_stats): + logical_cores = cpu_stats['logical_cores'] + os.environ["OMP_NUM_THREADS"] = str(logical_cores) + os.environ["TF_NUM_INTRAOP_THREADS"] = str(logical_cores) + os.environ["TF_NUM_INTEROP_THREADS"] = str(logical_cores) + + if gpu_stats: + gpus = tf.config.list_physical_devices('GPU') + if gpus: + try: + for gpu in gpus: + tf.config.experimental.set_memory_growth(gpu, True) + logging.info(f"Enabled memory growth for {len(gpus)} GPU(s).") + except RuntimeError as e: + logging.error(f"TensorFlow GPU configuration error: {e}") + else: + tf.config.threading.set_intra_op_parallelism_threads(logical_cores) + tf.config.threading.set_inter_op_parallelism_threads(logical_cores) + logging.info("Configured TensorFlow to use CPU with optimized thread settings.") + +def monitor_resources(interval=60): + while True: + cpu = psutil.cpu_percent(interval=1, percpu=True) + gpu = get_gpu_info() + logging.info(f"CPU Usage per Core: {cpu}%") + if gpu: + for gpu_stat in gpu: + logging.info(f"GPU {gpu_stat['id']} - {gpu_stat['name']}: Load: {gpu_stat['load']}%, " + f"Memory Used: {gpu_stat['memory_used']}MB / {gpu_stat['memory_total']}MB, " + f"Temperature: {gpu_stat['temperature']}°C") + else: + logging.info("No GPUs detected.") + logging.info("-" * 50) + time.sleep(interval) + +# ============================================================================= +# Data Loading & Technical Indicators +# ============================================================================= +def load_data(file_path): + logging.info(f"Loading data from: {file_path}") + try: + df = pd.read_csv(file_path, parse_dates=['time']) + except FileNotFoundError: + logging.error(f"File not found: {file_path}") + sys.exit(1) + except pd.errors.ParserError as e: + logging.error(f"Error parsing CSV file: {e}") + sys.exit(1) + except Exception as e: + logging.error(f"Unexpected error: {e}") + sys.exit(1) + + rename_mapping = { + 'time': 'Date', + 'open': 'Open', + 'high': 'High', + 'low': 'Low', + 'close': 'Close' + } + df.rename(columns=rename_mapping, inplace=True) + logging.info(f"Data columns after renaming: {df.columns.tolist()}") + df.sort_values('Date', inplace=True) + df.reset_index(drop=True, inplace=True) + logging.info("Data loaded and sorted successfully.") + return df + +def compute_rsi(series, window=14): + delta = series.diff() + gain = delta.where(delta > 0, 0).rolling(window=window).mean() + loss = -delta.where(delta < 0, 0).rolling(window=window).mean() + RS = gain / (loss + 1e-9) + return 100 - (100 / (1 + RS)) + +def compute_macd(series, span_short=12, span_long=26, span_signal=9): + ema_short = series.ewm(span=span_short, adjust=False).mean() + ema_long = series.ewm(span=span_long, adjust=False).mean() + macd_line = ema_short - ema_long + signal_line = macd_line.ewm(span=span_signal, adjust=False).mean() + return macd_line - signal_line # histogram + +def compute_obv(df): + signed_volume = (np.sign(df['Close'].diff()) * df['Volume']).fillna(0) + return signed_volume.cumsum() + +def compute_adx(df, window=14): + df['H-L'] = df['High'] - df['Low'] + df['H-Cp'] = (df['High'] - df['Close'].shift(1)).abs() + df['L-Cp'] = (df['Low'] - df['Close'].shift(1)).abs() + tr = df[['H-L','H-Cp','L-Cp']].max(axis=1) + tr_rolling = tr.rolling(window=window).mean() + adx_placeholder = tr_rolling / (df['Close'] + 1e-9) + df.drop(['H-L','H-Cp','L-Cp'], axis=1, inplace=True) + return adx_placeholder + +def compute_bollinger_bands(series, window=20, num_std=2): + sma = series.rolling(window=window).mean() + std = series.rolling(window=window).std() + upper = sma + num_std * std + lower = sma - num_std * std + bandwidth = (upper - lower) / (sma + 1e-9) + return upper, lower, bandwidth + +def compute_mfi(df, window=14): + typical_price = (df['High'] + df['Low'] + df['Close']) / 3 + money_flow = typical_price * df['Volume'] + prev_tp = typical_price.shift(1) + flow_pos = money_flow.where(typical_price > prev_tp, 0) + flow_neg = money_flow.where(typical_price < prev_tp, 0) + pos_sum = flow_pos.rolling(window=window).sum() + neg_sum = flow_neg.rolling(window=window).sum() + mfi = 100 - (100 / (1 + pos_sum / (neg_sum + 1e-9))) + return mfi + +def calculate_technical_indicators(df): + logging.info("Calculating technical indicators...") + df['RSI'] = compute_rsi(df['Close'], 14) + df['MACD'] = compute_macd(df['Close']) + df['OBV'] = compute_obv(df) + df['ADX'] = compute_adx(df) + + up, lo, bw = compute_bollinger_bands(df['Close'], 20, 2) + df['BB_Upper'] = up + df['BB_Lower'] = lo + df['BB_Width'] = bw + + df['MFI'] = compute_mfi(df, 14) + df['SMA_5'] = df['Close'].rolling(5).mean() + df['SMA_10'] = df['Close'].rolling(10).mean() + df['EMA_5'] = df['Close'].ewm(span=5, adjust=False).mean() + df['EMA_10'] = df['Close'].ewm(span=10, adjust=False).mean() + df['STDDEV_5'] = df['Close'].rolling(5).std() + + df.dropna(inplace=True) + logging.info("Technical indicators calculated successfully.") + return df + +# ============================================================================= +# Argument Parsing +# ============================================================================= +def parse_arguments(): + parser = argparse.ArgumentParser(description='Futures Trading with LSTM Forecasting and PPO.') + parser.add_argument('csv_path', type=str, + help='Path to CSV data with columns [time, open, high, low, close, volume].') + parser.add_argument('--lstm_window_size', type=int, default=15, + help='Sequence window size for LSTM forecasting. Default=15.') + parser.add_argument('--ppo_total_timesteps', type=int, default=100000, + help='Total timesteps to train the PPO model. Default=100000.') + parser.add_argument('--n_trials_lstm', type=int, default=30, + help='Number of Optuna trials for LSTM hyperparameter tuning. Default=30.') + parser.add_argument('--preprocess_workers', type=int, default=None, + help='Number of worker processes for data preprocessing. Defaults to (logical cores - 2).') + parser.add_argument('--monitor_resources', action='store_true', + help='Enable real-time resource monitoring.') + parser.add_argument('--output_dir', type=str, default='output', + help='Directory where all output files will be saved.') + parser.add_argument('--action_mode', type=str, choices=['discrete', 'continuous'], default='discrete', + help='Select action space type: discrete (e.g., -5 to +5) or continuous (Box). Default=discrete.') + parser.add_argument('--max_contracts', type=int, default=5, + help='Maximum number of contracts to trade per action. Default=5.') + return parser.parse_args() + +# ============================================================================= +# LSTM Price Predictor (renamed from LSTM part) +# ============================================================================= +def build_lstm(input_shape, hyperparams): + model = Sequential() + num_layers = hyperparams['num_lstm_layers'] + units = hyperparams['lstm_units'] + drop = hyperparams['dropout_rate'] + for i in range(num_layers): + return_seqs = (i < num_layers - 1) + if i == 0: + model.add(Bidirectional(LSTM(units, return_sequences=return_seqs, kernel_regularizer=l2(1e-4)), + input_shape=input_shape)) + else: + model.add(Bidirectional(LSTM(units, return_sequences=return_seqs, kernel_regularizer=l2(1e-4)))) + model.add(Dropout(drop)) + model.add(Dense(1, activation='linear')) + + opt_name = hyperparams['optimizer'] + lr = hyperparams['learning_rate'] + decay = hyperparams['decay'] + if opt_name == 'Adam': + opt = Adam(learning_rate=lr, decay=decay) + elif opt_name == 'Nadam': + opt = Nadam(learning_rate=lr) + else: + opt = Adam(learning_rate=lr) + + model.compile(loss=Huber(), optimizer=opt, metrics=['mae']) + return model + +# ============================================================================= +# Custom Gym Environment for Futures Trading with LSTM Forecasting +# ============================================================================= +class FuturesTradingEnv(gym.Env): + """ + A custom OpenAI Gym environment for futures trading. + It integrates an LSTM price predictor (PricePredictorLSTM) for forecasting. + The environment tracks positions as contracts_held (can be negative for shorts). + Reward is defined as the change in mark-to-market profit (unrealized PnL) + minus transaction costs. + The action space can be either discrete (e.g., -max_contracts ... +max_contracts) + or continuous (Box space) which is then rounded to an integer. + """ + metadata = {'render.modes': ['human']} + + def __init__(self, df, feature_columns, lstm_model, scaler_features, scaler_target, + window_size=15, transaction_cost=0.001, action_mode='discrete', max_contracts=5): + super(FuturesTradingEnv, self).__init__() + self.df = df.reset_index(drop=True) + self.feature_columns = feature_columns + self.lstm_model = lstm_model # PricePredictorLSTM (frozen during training) + self.scaler_features = scaler_features + self.scaler_target = scaler_target + self.window_size = window_size + self.transaction_cost = transaction_cost + self.action_mode = action_mode + self.max_contracts = max_contracts + + self.max_steps = len(df) + self.current_step = 0 + + # Futures position variables + self.contracts_held = 0 # positive for long, negative for short + self.entry_price = None # weighted average entry price + + # Pre-calculate normalized features for observations + self.raw_features = df[feature_columns].values + + # Define action space + if self.action_mode == 'discrete': + # Actions: integer orders from -max_contracts to +max_contracts + self.action_space = spaces.Discrete(2 * self.max_contracts + 1) + else: + # Continuous action: a real number in [-max_contracts, max_contracts] + self.action_space = spaces.Box(low=-self.max_contracts, high=self.max_contracts, shape=(1,), dtype=np.float32) + + # Observation space: technical indicators + [normalized contracts_held, normalized unrealized PnL] + LSTM forecast + obs_len = len(feature_columns) + 2 + 1 + self.observation_space = spaces.Box(low=-np.inf, high=np.inf, shape=(obs_len,), dtype=np.float32) + + # Lock for LSTM prediction (if used in multi-threaded settings) + self.lstm_lock = threading.Lock() + + def reset(self): + self.current_step = 0 + self.contracts_held = 0 + self.entry_price = None + return self._get_obs() + + def _get_obs(self): + # Normalize the raw features row by row + row = self.raw_features[self.current_step] + row_max = np.max(np.abs(row)) if np.max(np.abs(row)) != 0 else 1.0 + row_norm = row / row_max + + # Additional account info: + # Normalize contracts_held by max_contracts. + # Unrealized PnL: if entry_price exists, (current_price - entry_price)*contracts_held; else 0. + current_price = self.df.loc[self.current_step, 'Close'] + pnl = (current_price - self.entry_price) * self.contracts_held if self.entry_price is not None else 0.0 + + additional = np.array([ + self.contracts_held / self.max_contracts, + pnl # You might choose to normalize pnl as needed + ], dtype=np.float32) + + # LSTM price forecast: predict next price if possible + if self.current_step < self.window_size: + forecast = 0.0 + else: + seq = self.raw_features[self.current_step - self.window_size: self.current_step] + seq_scaled = self.scaler_features.transform(seq) + seq_scaled = np.expand_dims(seq_scaled, axis=0) # shape: (1, window_size, num_features) + with self.lstm_lock: + pred_scaled = self.lstm_model.predict(seq_scaled, verbose=0).flatten()[0] + pred_scaled = np.clip(pred_scaled, 0, 1) + unscaled = self.scaler_target.inverse_transform([[pred_scaled]])[0, 0] + # Forecast can be represented as the relative difference from the current price + forecast = (unscaled - current_price) / (current_price + 1e-9) + + obs = np.concatenate([row_norm, additional, [forecast]]).astype(np.float32) + return obs + + def step(self, action): + prev_price = self.df.loc[self.current_step, 'Close'] + prev_position = self.contracts_held + + # Convert action to an integer number of contracts + if self.action_mode == 'discrete': + # Discrete action space: 0 corresponds to -max_contracts, last to +max_contracts. + action_int = action - self.max_contracts + else: + # For continuous, round to nearest integer + action_int = int(np.round(action[0])) + # Clip action_int to allowable range + action_int = np.clip(action_int, -self.max_contracts, self.max_contracts) + + # Transaction cost fee applied on the notional of new trade + current_price = self.df.loc[self.current_step, 'Close'] + fee = self.transaction_cost * abs(action_int) * current_price + + # Update position + if action_int != 0: + # If no current position, simply set the new position and record entry price + if self.contracts_held == 0: + self.contracts_held = action_int + self.entry_price = current_price + # If same sign, update weighted average entry price + elif np.sign(self.contracts_held) == np.sign(action_int): + total_contracts = self.contracts_held + action_int + self.entry_price = (self.entry_price * self.contracts_held + current_price * action_int) / total_contracts + self.contracts_held = total_contracts + # If opposite sign, reduce/flip position: + else: + # If the new action fully reverses the position, calculate remaining contracts + if abs(action_int) >= abs(self.contracts_held): + # Realize profit/loss on the closed position (will be reflected in reward) + self.contracts_held = self.contracts_held + action_int # may flip sign + self.entry_price = current_price if self.contracts_held != 0 else None + else: + # Partial close; position sign remains the same. + self.contracts_held = self.contracts_held + action_int + # entry_price remains unchanged + + # Mark-to-market PnL: change from previous price * previous position + pnl_change = (current_price - prev_price) * prev_position + # Reward: change in unrealized PnL minus transaction fees + reward = pnl_change - fee + + self.current_step += 1 + done = (self.current_step >= self.max_steps - 1) + obs = self._get_obs() + return obs, reward, done, {} + + def render(self, mode='human'): + current_price = self.df.loc[self.current_step, 'Close'] + pnl = (current_price - self.entry_price) * self.contracts_held if self.entry_price is not None else 0.0 + print(f"Step: {self.current_step}, Contracts Held: {self.contracts_held}, " + f"Entry Price: {self.entry_price}, Current Price: {current_price:.2f}, PnL: {pnl:.2f}") + +# ============================================================================= +# Placeholders for Live Deployment Functions +# ============================================================================= +def get_live_data(): + """ + Placeholder: Connect to a live data feed and return the latest market data. + """ + # Implement connection to a live data source (e.g., API call to a broker) + # Return a dictionary or DataFrame row with market data. + return None + +def execute_order(action): + """ + Placeholder: Execute the trading order in a live environment. + """ + # Implement order execution logic with your broker API. + logging.info(f"Executing order: {action}") + +def live_trading_loop(model, env, polling_interval=5): + """ + Example live trading loop. + At each step, get live data, update the environment, use the model to predict the next action, + and execute the order. + """ + obs = env.reset() + done = False + while not done: + live_data = get_live_data() + if live_data is not None: + # Update environment with live data (this requires proper integration) + # For example, you might append the live data to the internal dataframe. + pass + + # Use the PPO model to predict the next action + action, _ = model.predict(obs, deterministic=True) + execute_order(action) + obs, reward, done, _ = env.step(action) + env.render() + time.sleep(polling_interval) + +# ============================================================================= +# Data Preprocessing with Parallelization +# ============================================================================= +def parallel_feature_engineering(row): + """ + Placeholder function for additional feature engineering. + """ + return row + +def feature_engineering_parallel(df, num_workers): + logging.info(f"Starting parallel feature engineering with {num_workers} workers...") + with Pool(processes=num_workers) as pool: + processed_rows = pool.map(parallel_feature_engineering, [row for _, row in df.iterrows()]) + df_processed = pd.DataFrame(processed_rows) + logging.info("Parallel feature engineering completed.") + return df_processed + +# ============================================================================= +# MAIN FUNCTION: LSTM Training + PPO for Futures Trading +# ============================================================================= +def main(): + args = parse_arguments() + csv_path = args.csv_path + output_dir = args.output_dir + os.makedirs(output_dir, exist_ok=True) + lstm_window_size = args.lstm_window_size + ppo_total_timesteps = args.ppo_total_timesteps + n_trials_lstm = args.n_trials_lstm + preprocess_workers = args.preprocess_workers + enable_resource_monitor = args.monitor_resources + action_mode = args.action_mode + max_contracts = args.max_contracts + + # ----------------------------- + # Setup Logging + # ----------------------------- + logging.basicConfig(level=logging.INFO, + format='%(asctime)s - %(levelname)s - %(message)s', + handlers=[ + logging.FileHandler(os.path.join(output_dir, "FuturesPPO.log")), + logging.StreamHandler(sys.stdout) + ]) + + # ----------------------------- + # Resource Detection & Logging + # ----------------------------- + cpu_stats = get_cpu_info() + gpu_stats = get_gpu_info() + logging.info("===== Resource Statistics =====") + logging.info(f"Physical CPU Cores: {cpu_stats['physical_cores']}") + logging.info(f"Logical CPU Cores: {cpu_stats['logical_cores']}") + logging.info(f"CPU Usage per Core: {cpu_stats['cpu_percent']}%") + if gpu_stats: + for gpu in gpu_stats: + logging.info(f"GPU {gpu['id']} - {gpu['name']}: Load: {gpu['load']}%, Memory Used: {gpu['memory_used']}MB/{gpu['memory_total']}MB, Temperature: {gpu['temperature']}°C") + else: + logging.info("No GPUs detected.") + logging.info("=================================") + + # ----------------------------- + # Configure TensorFlow + # ----------------------------- + configure_tensorflow(cpu_stats, gpu_stats) + + # ----------------------------- + # Start Resource Monitoring (Optional) + # ----------------------------- + if enable_resource_monitor: + logging.info("Starting real-time resource monitoring...") + resource_monitor_thread = threading.Thread(target=monitor_resources, args=(60,), daemon=True) + resource_monitor_thread.start() + + ########################################## + # A) LSTM PART: LOAD, PREPROCESS & TUNE + ########################################## + df = load_data(csv_path) + df = calculate_technical_indicators(df) + + feature_columns = [ + 'SMA_5','SMA_10','EMA_5','EMA_10','STDDEV_5', + 'RSI','MACD','ADX','OBV','Volume','Open','High','Low', + 'BB_Upper','BB_Lower','BB_Width','MFI' + ] + target_column = 'Close' + df = df[['Date'] + feature_columns + [target_column]].dropna() + + # 2) Controlled Parallel Data Preprocessing + if preprocess_workers is None: + preprocess_workers = max(1, cpu_stats['logical_cores'] - 2) + else: + preprocess_workers = min(preprocess_workers, cpu_stats['logical_cores']) + df = feature_engineering_parallel(df, num_workers=preprocess_workers) + + scaler_features = MinMaxScaler() + scaler_target = MinMaxScaler() + + X_all = df[feature_columns].values + y_all = df[[target_column]].values + + X_scaled = scaler_features.fit_transform(X_all) + y_scaled = scaler_target.fit_transform(y_all).flatten() + + # 3) Create sequences for LSTM forecasting + def create_sequences(features, target, window_size): + X_seq, y_seq = [], [] + for i in range(len(features) - window_size): + X_seq.append(features[i:i+window_size]) + y_seq.append(target[i+window_size]) + return np.array(X_seq), np.array(y_seq) + + X, y = create_sequences(X_scaled, y_scaled, lstm_window_size) + + # 4) Split into train/val/test + train_size = int(len(X) * 0.7) + val_size = int(len(X) * 0.15) + test_size = len(X) - train_size - val_size + + X_train, y_train = X[:train_size], y[:train_size] + X_val, y_val = X[train_size: train_size + val_size], y[train_size: train_size + val_size] + X_test, y_test = X[train_size + val_size:], y[train_size + val_size:] + + logging.info(f"Training sequences shape: {X_train.shape}") + logging.info(f"Validation sequences shape: {X_val.shape}") + logging.info(f"Testing sequences shape: {X_test.shape}") + + # 5) Define LSTM objective for hyperparameter tuning using Optuna + def lstm_objective(trial): + num_lstm_layers = trial.suggest_int('num_lstm_layers', 1, 3) + lstm_units = trial.suggest_categorical('lstm_units', [32, 64, 96, 128]) + dropout_rate = trial.suggest_float('dropout_rate', 0.1, 0.5) + learning_rate = trial.suggest_float('learning_rate', 1e-5, 1e-2, log=True) + optimizer_name = trial.suggest_categorical('optimizer', ['Adam', 'Nadam']) + decay = trial.suggest_float('decay', 0.0, 1e-4) + + hyperparams = { + 'num_lstm_layers': num_lstm_layers, + 'lstm_units': lstm_units, + 'dropout_rate': dropout_rate, + 'learning_rate': learning_rate, + 'optimizer': optimizer_name, + 'decay': decay + } + + model_ = build_lstm((X_train.shape[1], X_train.shape[2]), hyperparams) + early_stop = EarlyStopping(monitor='val_loss', patience=10, restore_best_weights=True) + lr_reduce = ReduceLROnPlateau(monitor='val_loss', factor=0.5, patience=5, min_lr=1e-6) + cb_prune = KerasPruningCallback(trial, 'val_loss') + + history = model_.fit( + X_train, y_train, + epochs=100, + batch_size=16, + validation_data=(X_val, y_val), + callbacks=[early_stop, lr_reduce, cb_prune], + verbose=0 + ) + val_mae = min(history.history['val_mae']) + return val_mae + + logging.info(f"Starting LSTM hyperparameter optimization with Optuna using {cpu_stats['logical_cores']-2} parallel trials...") + study_lstm = optuna.create_study(direction='minimize') + study_lstm.optimize(lstm_objective, n_trials=n_trials_lstm, n_jobs=cpu_stats['logical_cores']-2) + best_lstm_params = study_lstm.best_params + logging.info(f"Best LSTM Hyperparameters: {best_lstm_params}") + + # 6) Train final LSTM (PricePredictorLSTM) with best hyperparameters + final_lstm = build_lstm((X_train.shape[1], X_train.shape[2]), best_lstm_params) + early_stop_final = EarlyStopping(monitor='val_loss', patience=20, restore_best_weights=True) + lr_reduce_final = ReduceLROnPlateau(monitor='val_loss', factor=0.5, patience=5, min_lr=1e-6) + logging.info("Training best LSTM model with optimized hyperparameters...") + final_lstm.fit( + X_train, y_train, + epochs=300, + batch_size=16, + validation_data=(X_val, y_val), + callbacks=[early_stop_final, lr_reduce_final], + verbose=1 + ) + + # 7) Evaluate final LSTM + def evaluate_final_lstm(model, X_test, y_test): + logging.info("Evaluating final LSTM model...") + y_pred_scaled = model.predict(X_test).flatten() + y_pred_scaled = np.clip(y_pred_scaled, 0, 1) + y_pred = scaler_target.inverse_transform(y_pred_scaled.reshape(-1, 1)).flatten() + y_test_actual = scaler_target.inverse_transform(y_test.reshape(-1, 1)).flatten() + + mse_ = mean_squared_error(y_test_actual, y_pred) + rmse_ = np.sqrt(mse_) + mae_ = mean_absolute_error(y_test_actual, y_pred) + r2_ = r2_score(y_test_actual, y_pred) + + direction_actual = np.sign(np.diff(y_test_actual)) + direction_pred = np.sign(np.diff(y_pred)) + directional_accuracy = np.mean(direction_actual == direction_pred) + + logging.info(f"Test MSE: {mse_:.4f}") + logging.info(f"Test RMSE: {rmse_:.4f}") + logging.info(f"Test MAE: {mae_:.4f}") + logging.info(f"Test R2 Score: {r2_:.4f}") + logging.info(f"Directional Accuracy: {directional_accuracy:.4f}") + + plt.figure(figsize=(14, 7)) + plt.plot(y_test_actual, label='Actual Price') + plt.plot(y_pred, label='Predicted Price') + plt.title('LSTM: Actual vs Predicted Closing Prices') + plt.legend() + plt.grid(True) + plt.savefig(os.path.join(output_dir, 'lstm_actual_vs_pred.png')) + plt.close() + + table = [] + limit = min(40, len(y_test_actual)) + for i in range(limit): + table.append([i, round(y_test_actual[i], 2), round(y_pred[i], 2)]) + headers = ["Index", "Actual Price", "Predicted Price"] + print("\nFirst 40 Actual vs. Predicted Prices:") + print(tabulate(table, headers=headers, tablefmt="pretty")) + return r2_, directional_accuracy + + _r2, _diracc = evaluate_final_lstm(final_lstm, X_test, y_test) + + # 8) Save final LSTM model and scalers + final_lstm.save(os.path.join(output_dir, 'best_lstm_model.h5')) + joblib.dump(scaler_features, os.path.join(output_dir, 'scaler_features.pkl')) + joblib.dump(scaler_target, os.path.join(output_dir, 'scaler_target.pkl')) + logging.info("Saved best LSTM model and scaler objects.") + + ########################################## + # B) PPO PART: SET UP FUTURES TRADING ENVIRONMENT + ########################################## + env_params = { + 'df': df, + 'feature_columns': feature_columns, + 'lstm_model': final_lstm, # Frozen LSTM for forecasting + 'scaler_features': scaler_features, + 'scaler_target': scaler_target, + 'window_size': lstm_window_size, + 'transaction_cost': 0.001, + 'action_mode': action_mode, + 'max_contracts': max_contracts + } + + # Create the FuturesTradingEnv and wrap it for PPO training + env = FuturesTradingEnv(**env_params) + vec_env = DummyVecEnv([lambda: env]) + + # PPO hyperparameters (customize as needed) + ppo_hyperparams = { + 'n_steps': 2048, + 'batch_size': 64, + 'gae_lambda': 0.95, + 'gamma': 0.99, + 'learning_rate': 3e-4, + 'ent_coef': 0.0, + 'verbose': 1 + } + + # ----------------------------- + # Train PPO Model + # ----------------------------- + logging.info("Starting PPO training...") + ppo_model = PPO('MlpPolicy', vec_env, **ppo_hyperparams) + ppo_model.learn(total_timesteps=ppo_total_timesteps) + ppo_model.save(os.path.join(output_dir, "best_ppo_model.zip")) + logging.info("PPO training completed and model saved.") + + ########################################## + # C) FINAL INFERENCE & (Optional) LIVE TRADING EXAMPLE + ########################################## + # Evaluate the trained PPO model in the environment + obs = env.reset() + done = False + total_reward = 0.0 + step_data = [] + step_count = 0 + + while not done: + step_count += 1 + action, _ = ppo_model.predict(obs, deterministic=True) + obs, reward, done, _ = env.step(action) + total_reward += reward + step_data.append({ + "Step": step_count, + "Action": int(action) if action_mode=='discrete' else int(np.round(action[0])), + "Reward": reward, + "Contracts": env.contracts_held + }) + + final_pnl = (env.df.loc[env.current_step, 'Close'] - (env.entry_price if env.entry_price is not None else 0)) * env.contracts_held + print("\n=== Final PPO Inference ===") + print(f"Total Steps: {step_count}") + print(f"Final Contracts Held: {env.contracts_held}") + print(f"Final Estimated PnL: {final_pnl:.2f}") + print(f"Total Reward Sum: {total_reward:.2f}") + + print("\nLast 15 Steps:") + last_n = step_data[-15:] if len(step_data) > 15 else step_data + print(tabulate(last_n, headers="keys", tablefmt="pretty")) + + # OPTIONAL: Uncomment to run a live trading loop (requires implementation of live data feed and order execution) + # live_trading_loop(ppo_model, env) + +if __name__ == "__main__": + main() + diff --git a/src/Machine-Learning/LSTM-python/src/README.md b/src/MidasAgent/README.md similarity index 100% rename from src/Machine-Learning/LSTM-python/src/README.md rename to src/MidasAgent/README.md diff --git a/src/Machine-Learning/LSTM-python/src/data/AMD_5min_3years.csv b/src/MidasAgent/data/AMD_5min_3years.csv similarity index 100% rename from src/Machine-Learning/LSTM-python/src/data/AMD_5min_3years.csv rename to src/MidasAgent/data/AMD_5min_3years.csv diff --git a/src/Machine-Learning/LSTM-python/src/data/BAT.csv b/src/MidasAgent/data/BAT.csv similarity index 100% rename from src/Machine-Learning/LSTM-python/src/data/BAT.csv rename to src/MidasAgent/data/BAT.csv diff --git a/src/MidasAgent/data/MES2023Z.csv b/src/MidasAgent/data/MES2023Z.csv new file mode 100644 index 0000000..65715a4 --- /dev/null +++ b/src/MidasAgent/data/MES2023Z.csv @@ -0,0 +1,1001 @@ +time,open,high,low,close,Volume +1306,4707.00,4707.25,4705.50,4707.25,27 +1307,4707.25,4707.50,4706.75,4707.00,17 +1308,4707.25,4707.25,4706.25,4706.50,14 +1309,4706.50,4706.75,4705.50,4706.00,20 +1310,4705.75,4707.50,4704.00,4707.50,55 +1311,4707.50,4708.50,4707.50,4707.75,49 +1312,4708.00,4710.25,4708.00,4710.25,56 +1313,4710.00,4710.25,4709.50,4709.50,30 +1314,4709.50,4709.75,4708.75,4709.00,17 +1315,4709.00,4709.50,4708.25,4708.75,19 +1316,4708.50,4710.50,4708.50,4710.25,34 +1317,4710.25,4711.00,4710.00,4710.50,22 +1318,4710.50,4711.25,4710.50,4710.75,13 +1319,4710.75,4712.50,4710.75,4712.25,26 +1320,4712.25,4712.50,4711.50,4712.00,21 +1321,4712.00,4713.00,4711.75,4712.25,23 +1322,4712.50,4713.50,4712.50,4713.25,14 +1323,4713.25,4714.25,4712.25,4713.25,28 +1324,4713.25,4714.25,4713.00,4714.25,19 +1325,4714.25,4714.50,4713.50,4714.25,28 +1326,4714.00,4715.00,4713.75,4714.00,24 +1327,4714.25,4714.25,4712.75,4713.50,18 +1328,4713.50,4713.50,4711.75,4712.75,33 +1329,4713.00,4714.00,4712.75,4714.00,13 +1330,4714.00,4714.00,4711.75,4713.00,27 +1331,4713.00,4713.75,4712.25,4712.75,21 +1332,4712.25,4713.75,4712.00,4713.00,16 +1333,4713.25,4713.25,4712.25,4713.25,17 +1334,4713.50,4715.00,4713.50,4714.25,27 +1335,4714.00,4714.50,4713.75,4714.25,15 +1336,4714.50,4715.50,4712.00,4712.25,39 +1337,4712.25,4714.00,4712.00,4712.50,26 +1338,4712.50,4714.50,4712.50,4714.00,21 +1339,4713.75,4713.75,4712.25,4712.25,10 +1340,4712.25,4712.75,4711.00,4712.25,24 +1341,4712.50,4712.50,4711.75,4711.75,26 +1342,4711.50,4712.50,4711.25,4712.50,21 +1343,4712.50,4713.75,4712.00,4713.75,20 +1344,4713.75,4714.50,4713.75,4713.75,18 +1345,4713.75,4714.75,4713.25,4714.00,17 +1346,4714.00,4715.00,4713.75,4714.50,15 +1347,4714.50,4714.75,4714.00,4714.75,9 +1348,4714.75,4716.00,4714.75,4715.50,36 +1349,4715.50,4716.25,4715.50,4716.00,22 +1350,4716.25,4716.50,4715.25,4716.00,17 +1351,4716.00,4716.00,4715.00,4715.50,17 +1352,4715.75,4716.25,4715.25,4715.75,18 +1353,4716.00,4716.25,4715.25,4715.25,8 +1354,4715.25,4715.50,4714.25,4714.50,23 +1355,4714.50,4716.75,4714.25,4716.75,30 +1356,4716.75,4717.50,4716.50,4716.75,29 +1357,4716.50,4716.50,4715.25,4716.00,16 +1358,4716.00,4717.00,4715.50,4716.25,24 +1359,4716.25,4717.50,4716.25,4717.00,15 +1400,4717.00,4717.25,4716.00,4716.50,18 +1401,4716.75,4718.00,4716.50,4717.50,33 +1402,4717.50,4718.00,4716.75,4717.75,24 +1403,4717.75,4718.00,4717.50,4717.75,12 +1404,4717.75,4718.00,4715.25,4715.25,18 +1405,4715.00,4716.50,4714.75,4716.25,30 +1406,4716.00,4718.00,4716.00,4716.50,26 +1407,4716.25,4716.50,4715.00,4715.75,25 +1408,4716.00,4718.00,4716.00,4717.25,14 +1409,4717.25,4719.00,4716.50,4717.00,21 +1410,4717.00,4717.00,4716.25,4716.50,10 +1411,4716.50,4717.75,4716.00,4717.75,16 +1412,4717.50,4720.50,4716.50,4716.75,58 +1413,4716.75,4717.00,4715.50,4715.50,18 +1414,4715.75,4717.00,4715.50,4716.25,25 +1415,4716.25,4716.75,4714.75,4716.75,30 +1416,4716.75,4717.25,4716.25,4717.25,12 +1417,4717.25,4718.25,4716.50,4718.00,27 +1418,4718.00,4718.00,4716.75,4717.50,18 +1419,4717.50,4718.75,4717.50,4718.50,23 +1420,4718.50,4718.75,4717.00,4717.50,29 +1421,4717.00,4718.50,4717.00,4718.25,11 +1422,4718.25,4719.00,4718.25,4718.75,13 +1423,4718.50,4718.75,4717.50,4718.00,17 +1424,4718.25,4718.75,4718.00,4718.75,4 +1425,4718.75,4719.50,4718.75,4718.75,13 +1426,4719.00,4719.25,4718.75,4718.75,4 +1427,4718.50,4719.00,4718.00,4719.00,13 +1428,4718.75,4719.00,4718.50,4718.75,7 +1429,4718.75,4719.00,4716.25,4716.50,33 +1430,4716.75,4718.00,4716.75,4717.25,27 +1431,4717.00,4717.75,4717.00,4717.50,15 +1432,4717.25,4718.25,4716.50,4716.75,33 +1433,4716.75,4717.25,4716.00,4716.75,38 +1434,4716.50,4717.00,4715.75,4716.00,23 +1435,4715.75,4717.75,4715.00,4717.00,34 +1436,4717.25,4718.50,4717.25,4717.75,22 +1437,4717.50,4717.50,4715.75,4716.75,19 +1438,4717.00,4717.50,4716.00,4716.25,15 +1439,4716.25,4716.25,4714.50,4714.75,27 +1440,4714.75,4715.50,4713.25,4713.75,45 +1441,4714.00,4716.25,4713.75,4715.25,44 +1442,4715.25,4715.50,4714.25,4714.50,20 +1443,4714.25,4717.00,4714.00,4716.25,30 +1444,4716.00,4716.25,4714.00,4714.25,16 +1445,4714.25,4715.25,4714.25,4715.25,13 +1446,4715.50,4718.00,4715.50,4716.50,40 +1447,4716.25,4717.00,4714.00,4714.75,34 +1448,4714.75,4715.50,4714.50,4715.50,18 +1449,4715.25,4715.25,4712.75,4714.25,38 +1450,4714.00,4717.25,4714.00,4717.25,42 +1451,4717.50,4718.50,4717.50,4718.25,36 +1452,4718.50,4718.75,4717.50,4717.75,29 +1453,4717.50,4717.50,4715.25,4716.75,34 +1454,4717.00,4717.00,4714.75,4715.25,36 +1455,4715.50,4717.50,4715.00,4717.25,39 +1456,4717.25,4717.50,4714.75,4715.00,23 +1457,4715.00,4717.75,4715.00,4717.75,33 +1458,4718.00,4719.50,4717.00,4719.25,48 +1459,4719.00,4723.50,4719.00,4721.75,176 +1500,4723.00,4723.75,4721.75,4723.25,87 +1501,4723.00,4723.25,4722.50,4722.75,33 +1502,4722.75,4723.00,4720.25,4720.50,32 +1503,4720.25,4720.50,4718.75,4719.25,16 +1504,4720.00,4720.25,4719.50,4719.75,12 +1505,4719.50,4719.75,4718.75,4719.00,19 +1506,4719.25,4719.75,4718.50,4719.75,10 +1507,4719.75,4720.00,4719.00,4719.00,9 +1508,4719.00,4719.25,4718.25,4718.50,6 +1509,4718.50,4719.25,4718.50,4719.00,6 +1510,4719.25,4719.25,4718.50,4718.50,6 +1511,4719.00,4719.50,4718.75,4719.50,7 +1512,4719.25,4719.50,4718.50,4718.50,7 +1513,4718.75,4718.75,4718.50,4718.50,12 +1514,4718.50,4719.00,4717.25,4717.25,16 +1515,4717.25,4718.25,4717.25,4718.25,4 +1516,4718.75,4718.75,4717.75,4717.75,2 +1517,4718.00,4718.25,4717.75,4718.00,4 +1518,4718.00,4718.50,4718.00,4718.00,4 +1519,4718.50,4718.75,4718.00,4718.00,3 +1520,4718.00,4718.00,4717.50,4717.50,5 +1521,4717.75,4717.75,4716.50,4716.50,4 +1522,4716.75,4716.75,4716.50,4716.50,2 +1523,4716.50,4717.00,4716.50,4717.00,1 +1524,4717.00,4717.50,4717.00,4717.50,1 +1525,4717.00,4717.50,4716.75,4717.50,6 +1526,4716.75,4716.75,4716.50,4716.50,2 +1527,4716.00,4716.25,4716.00,4716.00,3 +1528,4716.00,4716.00,4715.75,4715.75,1 +1529,4715.75,4716.00,4715.50,4716.00,2 +1530,4716.25,4716.50,4716.00,4716.00,3 +1531,4716.25,4716.50,4716.25,4716.50,2 +1532,4716.25,4716.25,4715.75,4715.75,3 +1533,4716.00,4716.75,4715.75,4716.75,4 +1534,4716.75,4716.75,4716.75,4716.75,0 +1535,4715.75,4716.50,4715.75,4716.00,5 +1536,4715.75,4716.00,4715.75,4716.00,2 +1537,4715.75,4715.75,4715.75,4715.75,1 +1538,4716.25,4716.50,4716.25,4716.50,2 +1539,4716.50,4716.75,4716.50,4716.50,2 +1540,4716.75,4717.00,4716.50,4716.50,4 +1541,4717.25,4717.25,4717.25,4717.25,1 +1542,4716.75,4717.25,4716.50,4716.50,3 +1543,4716.50,4717.75,4716.50,4717.75,3 +1544,4717.50,4717.50,4717.00,4717.00,3 +1545,4717.25,4717.50,4716.50,4716.50,7 +1546,4716.50,4717.75,4716.50,4717.50,7 +1547,4717.00,4717.25,4716.75,4717.25,4 +1548,4717.50,4717.50,4717.50,4717.50,1 +1549,4717.50,4717.50,4717.50,4717.50,0 +1550,4717.75,4717.75,4717.50,4717.50,2 +1551,4717.75,4718.25,4717.75,4717.75,6 +1552,4717.75,4717.75,4717.75,4717.75,0 +1553,4718.00,4718.25,4717.50,4717.50,4 +1554,4717.25,4717.50,4717.00,4717.50,3 +1555,4717.50,4717.75,4717.00,4717.25,8 +1556,4717.50,4717.75,4717.00,4717.00,5 +1557,4717.25,4717.50,4717.00,4717.00,5 +1558,4717.25,4718.00,4716.50,4718.00,7 +1559,4716.75,4717.25,4716.25,4716.50,6 +1700,4717.25,4717.75,4715.25,4717.75,13 +1701,4717.25,4717.25,4714.25,4714.25,10 +1702,4714.25,4714.25,4714.00,4714.00,1 +1703,4714.25,4715.00,4714.00,4715.00,3 +1704,4715.00,4716.25,4714.75,4715.00,7 +1705,4715.00,4715.00,4715.00,4715.00,0 +1706,4714.00,4714.00,4713.75,4713.75,2 +1707,4713.50,4713.50,4711.75,4713.00,17 +1708,4712.75,4713.50,4712.50,4712.75,7 +1709,4713.00,4713.25,4713.00,4713.25,2 +1710,4713.50,4713.50,4713.25,4713.25,2 +1711,4714.25,4714.25,4714.25,4714.25,1 +1712,4713.75,4715.00,4713.75,4715.00,4 +1713,4714.50,4714.50,4714.50,4714.50,1 +1714,4714.50,4715.00,4714.25,4715.00,6 +1715,4715.00,4715.25,4714.25,4715.25,2 +1716,4715.50,4716.00,4715.50,4716.00,2 +1717,4715.50,4716.25,4715.50,4716.25,4 +1718,4716.00,4716.00,4716.00,4716.00,1 +1719,4716.00,4716.50,4715.25,4716.50,5 +1720,4716.50,4718.75,4716.25,4716.75,21 +1721,4717.00,4717.00,4716.50,4716.50,3 +1722,4717.00,4717.00,4717.00,4717.00,1 +1723,4717.00,4717.00,4716.50,4716.75,2 +1724,4716.50,4716.50,4716.50,4716.50,1 +1725,4716.75,4717.75,4716.75,4717.75,4 +1726,4717.25,4717.50,4717.25,4717.50,2 +1727,4717.75,4717.75,4717.75,4717.75,1 +1728,4717.75,4718.25,4717.75,4718.25,1 +1729,4719.00,4719.25,4718.00,4718.50,8 +1730,4718.50,4718.50,4718.50,4718.50,0 +1731,4718.50,4718.75,4718.25,4718.25,2 +1732,4718.25,4718.25,4718.25,4718.25,0 +1733,4718.25,4718.25,4718.25,4718.25,0 +1734,4718.75,4718.75,4718.75,4718.75,1 +1735,4718.50,4718.50,4718.00,4718.25,4 +1736,4718.50,4718.50,4717.75,4717.75,5 +1737,4717.75,4717.75,4717.75,4717.75,0 +1739,4717.75,4718.00,4717.50,4718.00,2 +1740,4718.25,4718.25,4718.25,4718.25,1 +1741,4718.50,4718.50,4718.50,4718.50,1 +1742,4719.00,4719.25,4718.75,4718.75,3 +1743,4719.00,4719.00,4718.25,4718.25,3 +1744,4719.25,4719.25,4719.25,4719.25,1 +1745,4719.00,4719.00,4718.50,4718.50,2 +1746,4719.00,4719.00,4719.00,4719.00,1 +1747,4719.00,4719.00,4719.00,4719.00,0 +1748,4719.00,4719.00,4719.00,4719.00,0 +1749,4718.75,4718.75,4718.50,4718.50,2 +1750,4718.75,4719.25,4718.50,4719.25,5 +1751,4719.25,4719.25,4719.25,4719.25,0 +1752,4719.25,4719.50,4719.25,4719.50,1 +1754,4719.75,4720.00,4719.75,4720.00,4 +1755,4719.25,4719.75,4719.25,4719.50,3 +1756,4719.25,4719.50,4718.75,4719.25,5 +1757,4719.50,4719.50,4719.00,4719.00,2 +1758,4719.50,4719.50,4719.50,4719.50,1 +1759,4719.50,4719.75,4719.50,4719.75,1 +1800,4719.50,4719.75,4719.50,4719.75,2 +1801,4719.75,4720.00,4719.50,4720.00,3 +1802,4720.00,4720.50,4720.00,4720.50,2 +1803,4720.25,4720.75,4720.00,4720.00,5 +1804,4720.25,4721.50,4719.75,4721.00,18 +1805,4721.00,4721.00,4720.50,4721.00,3 +1806,4721.00,4721.25,4721.00,4721.25,1 +1807,4720.50,4720.50,4720.25,4720.25,2 +1808,4720.50,4721.25,4720.50,4721.00,5 +1809,4720.50,4722.00,4720.50,4721.50,5 +1810,4721.25,4721.50,4721.25,4721.50,2 +1811,4721.50,4721.50,4721.00,4721.00,1 +1812,4721.00,4721.25,4721.00,4721.25,1 +1813,4721.00,4721.00,4721.00,4721.00,1 +1814,4721.50,4721.50,4721.00,4721.00,3 +1815,4721.75,4722.25,4721.75,4722.00,4 +1816,4722.25,4722.25,4721.75,4721.75,3 +1817,4721.25,4721.25,4720.00,4720.00,6 +1818,4720.25,4720.75,4720.25,4720.25,5 +1819,4720.25,4720.50,4720.25,4720.50,3 +1820,4720.75,4721.00,4720.75,4721.00,2 +1821,4720.50,4720.50,4720.50,4720.50,1 +1822,4720.25,4720.25,4720.00,4720.00,2 +1823,4720.25,4720.25,4720.00,4720.00,2 +1824,4720.25,4720.50,4720.25,4720.50,2 +1825,4720.75,4720.75,4720.75,4720.75,1 +1826,4720.50,4720.50,4720.50,4720.50,1 +1827,4721.00,4721.00,4720.75,4720.75,2 +1828,4720.75,4720.75,4720.75,4720.75,0 +1829,4720.75,4720.75,4720.00,4720.00,2 +1830,4720.25,4720.25,4720.25,4720.25,1 +1831,4720.00,4720.25,4720.00,4720.25,2 +1832,4720.50,4720.50,4720.50,4720.50,1 +1833,4721.00,4721.00,4720.50,4720.50,2 +1834,4720.50,4720.50,4720.50,4720.50,0 +1835,4720.25,4720.25,4720.25,4720.25,1 +1836,4720.50,4720.50,4720.50,4720.50,1 +1837,4720.25,4720.25,4720.25,4720.25,1 +1839,4720.75,4720.75,4720.75,4720.75,1 +1840,4721.00,4721.00,4721.00,4721.00,1 +1841,4721.50,4722.00,4721.00,4721.00,4 +1842,4721.50,4721.50,4721.25,4721.25,2 +1843,4721.50,4722.00,4721.50,4721.75,4 +1844,4721.75,4721.75,4721.00,4721.25,4 +1847,4720.75,4720.75,4720.25,4720.25,5 +1848,4720.25,4720.25,4719.50,4719.50,3 +1849,4719.75,4719.75,4719.50,4719.50,2 +1850,4720.00,4720.50,4720.00,4720.50,3 +1851,4720.25,4720.25,4720.25,4720.25,1 +1853,4719.75,4720.00,4719.50,4720.00,4 +1854,4720.00,4720.00,4720.00,4720.00,0 +1855,4719.75,4720.00,4719.75,4720.00,2 +1856,4720.50,4720.50,4720.50,4720.50,1 +1857,4720.75,4720.75,4720.50,4720.50,4 +1858,4720.00,4720.00,4719.75,4719.75,2 +1859,4719.50,4719.75,4719.50,4719.75,2 +1900,4720.25,4721.00,4720.25,4721.00,3 +1901,4720.00,4720.00,4719.25,4719.25,2 +1902,4719.25,4719.50,4718.75,4718.75,6 +1903,4718.75,4719.00,4718.75,4718.75,2 +1904,4718.75,4719.25,4718.75,4719.25,2 +1905,4719.00,4719.25,4718.25,4718.25,8 +1906,4718.75,4718.75,4717.00,4717.00,14 +1907,4717.25,4717.25,4716.50,4717.00,10 +1908,4717.00,4717.25,4716.75,4717.00,4 +1909,4717.25,4717.25,4717.00,4717.25,5 +1910,4717.00,4717.25,4716.50,4717.25,5 +1911,4719.00,4719.25,4719.00,4719.25,2 +1912,4718.75,4719.00,4718.25,4718.50,4 +1913,4718.25,4718.25,4718.00,4718.00,2 +1914,4717.75,4717.75,4717.75,4717.75,1 +1915,4718.00,4719.25,4718.00,4719.25,7 +1916,4719.50,4719.50,4719.25,4719.25,4 +1917,4719.25,4719.25,4719.00,4719.00,1 +1918,4719.25,4720.25,4719.25,4720.25,5 +1919,4719.75,4720.00,4719.50,4719.50,6 +1920,4720.25,4720.25,4720.25,4720.25,1 +1921,4720.25,4720.25,4720.25,4720.25,0 +1922,4720.50,4720.50,4720.25,4720.50,3 +1923,4720.50,4720.50,4720.50,4720.50,0 +1925,4720.00,4720.00,4719.50,4719.50,2 +1926,4720.00,4720.00,4720.00,4720.00,1 +1927,4720.00,4720.00,4720.00,4720.00,0 +1928,4720.25,4720.25,4720.00,4720.00,2 +1929,4720.25,4720.50,4720.25,4720.50,2 +1930,4720.75,4720.75,4720.50,4720.50,2 +1931,4720.50,4720.75,4720.50,4720.75,1 +1932,4720.75,4721.00,4720.75,4721.00,1 +1933,4720.75,4720.75,4720.25,4720.25,2 +1934,4720.00,4720.00,4719.50,4719.75,6 +1935,4719.75,4720.25,4719.75,4720.25,2 +1939,4720.75,4720.75,4720.75,4720.75,1 +1940,4720.75,4721.00,4720.50,4720.75,4 +1941,4720.25,4720.25,4720.25,4720.25,1 +1942,4720.75,4720.75,4720.50,4720.50,2 +1943,4720.50,4720.50,4720.25,4720.25,1 +1944,4720.50,4720.50,4720.50,4720.50,1 +1945,4720.25,4721.00,4720.25,4721.00,3 +1946,4721.00,4721.00,4721.00,4721.00,0 +1947,4721.25,4721.25,4721.00,4721.00,2 +1949,4721.25,4721.25,4721.25,4721.25,1 +1950,4721.25,4721.25,4720.75,4721.00,3 +1952,4721.00,4721.00,4720.75,4721.00,2 +1955,4720.25,4720.50,4720.25,4720.50,2 +1957,4720.75,4721.00,4720.75,4720.75,3 +1958,4721.00,4721.00,4720.75,4721.00,3 +2000,4720.75,4720.75,4720.75,4720.75,1 +2001,4721.00,4721.00,4721.00,4721.00,1 +2002,4720.50,4720.50,4720.50,4720.50,1 +2003,4720.50,4720.50,4720.50,4720.50,0 +2004,4720.25,4720.25,4720.00,4720.25,5 +2005,4720.50,4720.75,4720.50,4720.75,2 +2006,4721.00,4721.25,4721.00,4721.00,3 +2008,4721.00,4721.25,4721.00,4721.25,1 +2009,4721.25,4721.25,4721.00,4721.00,1 +2010,4720.75,4720.75,4720.75,4720.75,1 +2011,4720.75,4720.75,4720.75,4720.75,0 +2012,4720.75,4721.00,4720.75,4721.00,1 +2013,4721.25,4721.25,4721.25,4721.25,1 +2014,4721.25,4721.50,4721.25,4721.25,2 +2015,4721.25,4721.75,4721.25,4721.50,3 +2017,4721.75,4721.75,4721.75,4721.75,1 +2018,4721.50,4721.75,4721.50,4721.75,2 +2020,4722.00,4722.25,4721.75,4722.00,5 +2022,4722.00,4722.25,4722.00,4722.25,1 +2023,4722.50,4722.50,4722.25,4722.25,2 +2024,4722.25,4722.75,4722.25,4722.75,4 +2025,4722.50,4722.75,4722.50,4722.75,2 +2026,4723.00,4723.25,4723.00,4723.25,2 +2027,4723.00,4723.25,4723.00,4723.25,4 +2028,4723.25,4723.25,4723.00,4723.25,2 +2029,4723.00,4723.25,4723.00,4723.00,3 +2030,4723.25,4723.50,4723.25,4723.50,2 +2031,4723.25,4723.25,4723.25,4723.25,1 +2032,4723.25,4723.50,4723.25,4723.50,1 +2033,4723.50,4723.50,4723.50,4723.50,0 +2035,4722.50,4722.50,4722.50,4722.50,1 +2036,4722.75,4722.75,4722.75,4722.75,1 +2037,4722.50,4722.50,4722.25,4722.25,2 +2038,4722.00,4722.00,4721.75,4721.75,2 +2039,4721.75,4721.75,4721.25,4721.25,2 +2040,4721.75,4722.00,4721.75,4722.00,2 +2041,4722.25,4722.25,4722.25,4722.25,1 +2042,4722.25,4722.25,4722.25,4722.25,0 +2043,4722.50,4722.50,4722.00,4722.00,2 +2044,4721.50,4721.50,4721.50,4721.50,1 +2045,4721.75,4721.75,4721.50,4721.50,2 +2046,4721.50,4721.50,4721.50,4721.50,0 +2047,4721.50,4721.50,4721.50,4721.50,0 +2049,4721.25,4722.00,4721.25,4722.00,3 +2051,4722.00,4722.00,4722.00,4722.00,0 +2052,4721.75,4722.00,4721.75,4722.00,2 +2053,4722.00,4722.25,4721.75,4721.75,2 +2055,4722.50,4722.50,4722.50,4722.50,1 +2056,4722.50,4722.75,4722.50,4722.75,3 +2057,4722.75,4723.00,4722.75,4722.75,2 +2100,4722.75,4722.75,4722.50,4722.50,1 +2101,4722.50,4722.50,4722.50,4722.50,0 +2103,4722.50,4722.50,4722.50,4722.50,0 +2105,4722.75,4722.75,4722.75,4722.75,1 +2107,4723.00,4723.00,4722.75,4722.75,2 +2108,4722.50,4722.50,4722.50,4722.50,1 +2109,4722.50,4722.75,4722.50,4722.50,4 +2110,4722.50,4722.75,4722.50,4722.50,2 +2111,4722.50,4722.50,4722.50,4722.50,0 +2112,4722.50,4723.00,4722.50,4722.75,3 +2113,4722.75,4722.75,4722.75,4722.75,0 +2114,4722.75,4722.75,4722.50,4722.50,1 +2115,4722.75,4722.75,4722.75,4722.75,1 +2116,4722.50,4722.50,4722.50,4722.50,1 +2119,4722.50,4722.50,4722.50,4722.50,0 +2120,4722.25,4722.25,4722.25,4722.25,1 +2121,4723.00,4723.00,4723.00,4723.00,1 +2122,4722.75,4722.75,4722.75,4722.75,1 +2123,4722.75,4722.75,4722.75,4722.75,0 +2124,4722.75,4722.75,4722.50,4722.50,1 +2126,4723.00,4723.00,4723.00,4723.00,1 +2127,4723.00,4723.00,4723.00,4723.00,0 +2129,4722.75,4722.75,4722.50,4722.50,2 +2130,4722.75,4723.00,4722.75,4722.75,3 +2132,4722.50,4722.50,4722.50,4722.50,1 +2133,4722.75,4722.75,4722.75,4722.75,1 +2134,4722.75,4722.75,4722.75,4722.75,0 +2135,4723.00,4723.00,4723.00,4723.00,1 +2140,4723.25,4723.50,4723.25,4723.50,2 +2141,4723.75,4724.00,4723.50,4723.50,4 +2143,4723.75,4723.75,4723.75,4723.75,1 +2144,4724.00,4724.00,4724.00,4724.00,1 +2145,4723.75,4724.00,4723.75,4724.00,2 +2146,4724.00,4724.00,4724.00,4724.00,0 +2147,4724.00,4724.00,4724.00,4724.00,0 +2148,4724.00,4724.00,4724.00,4724.00,0 +2149,4724.00,4724.25,4724.00,4724.25,1 +2150,4724.25,4724.25,4724.00,4724.00,1 +2151,4724.25,4724.25,4724.25,4724.25,1 +2152,4724.25,4724.25,4724.25,4724.25,0 +2153,4724.25,4724.25,4724.25,4724.25,0 +2156,4724.00,4725.00,4724.00,4724.50,6 +2157,4724.50,4726.25,4724.50,4725.75,13 +2158,4725.50,4725.50,4725.50,4725.50,1 +2159,4726.00,4726.00,4725.75,4725.75,4 +2200,4725.75,4726.00,4725.75,4726.00,1 +2201,4725.50,4725.50,4725.25,4725.25,2 +2202,4725.50,4725.50,4725.50,4725.50,1 +2203,4725.25,4725.25,4725.00,4725.00,2 +2204,4725.00,4725.00,4725.00,4725.00,0 +2205,4725.00,4726.00,4725.00,4726.00,6 +2206,4726.00,4726.00,4725.75,4725.75,1 +2208,4725.75,4726.25,4725.75,4726.00,3 +2209,4726.00,4726.00,4725.75,4725.75,1 +2211,4726.25,4726.25,4726.00,4726.25,3 +2212,4726.50,4726.50,4726.50,4726.50,1 +2213,4726.25,4726.50,4726.25,4726.50,2 +2214,4726.50,4726.50,4726.50,4726.50,0 +2215,4726.25,4726.50,4726.25,4726.25,3 +2218,4726.50,4726.50,4726.50,4726.50,1 +2219,4726.50,4726.75,4726.50,4726.75,1 +2220,4726.50,4726.50,4726.50,4726.50,1 +2222,4726.75,4726.75,4726.75,4726.75,1 +2223,4726.50,4726.50,4726.25,4726.25,2 +2224,4726.25,4726.25,4726.25,4726.25,0 +2227,4726.50,4726.50,4726.50,4726.50,1 +2228,4726.50,4726.50,4726.50,4726.50,0 +2229,4726.50,4726.75,4726.50,4726.75,1 +2230,4726.50,4726.50,4726.50,4726.50,1 +2231,4726.50,4726.50,4726.50,4726.50,0 +2233,4726.25,4726.25,4726.25,4726.25,1 +2234,4726.25,4726.50,4726.25,4726.50,1 +2235,4726.50,4726.50,4726.50,4726.50,0 +2236,4726.75,4726.75,4726.75,4726.75,1 +2238,4726.50,4726.75,4726.50,4726.75,2 +2240,4726.50,4726.50,4726.25,4726.25,2 +2241,4726.50,4726.50,4726.50,4726.50,1 +2243,4726.50,4726.50,4726.50,4726.50,0 +2244,4726.75,4726.75,4726.75,4726.75,1 +2245,4726.50,4726.50,4726.50,4726.50,1 +2247,4726.00,4726.25,4726.00,4726.25,2 +2248,4726.25,4726.25,4726.25,4726.25,0 +2249,4726.00,4726.00,4725.75,4725.75,2 +2250,4725.75,4725.75,4725.75,4725.75,0 +2251,4726.00,4726.00,4725.75,4725.75,2 +2252,4725.75,4726.00,4725.75,4726.00,1 +2254,4726.00,4726.25,4726.00,4726.25,1 +2256,4726.25,4726.25,4726.25,4726.25,0 +2257,4726.25,4726.25,4726.25,4726.25,0 +2258,4726.25,4726.50,4726.25,4726.50,1 +2259,4726.50,4726.50,4726.50,4726.50,0 +2300,4726.75,4726.75,4726.50,4726.50,2 +2303,4726.50,4726.50,4726.25,4726.50,2 +2305,4726.50,4726.50,4726.50,4726.50,0 +2308,4727.00,4727.25,4727.00,4727.25,2 +2309,4727.25,4727.50,4727.25,4727.25,2 +2310,4727.25,4727.25,4727.25,4727.25,0 +2311,4726.75,4727.00,4726.50,4726.50,4 +2312,4726.25,4726.25,4726.25,4726.25,1 +2313,4726.50,4726.50,4726.50,4726.50,1 +2316,4726.75,4726.75,4726.75,4726.75,1 +2318,4726.50,4726.50,4726.50,4726.50,1 +2319,4726.50,4726.50,4726.50,4726.50,0 +2320,4726.25,4726.25,4726.25,4726.25,1 +2321,4726.50,4726.50,4725.75,4725.75,3 +2322,4725.50,4725.50,4725.00,4725.00,2 +2323,4725.50,4726.00,4725.50,4726.00,2 +2324,4725.75,4725.75,4725.75,4725.75,1 +2326,4725.75,4725.75,4725.50,4725.50,1 +2327,4725.75,4725.75,4725.75,4725.75,1 +2328,4726.00,4726.50,4726.00,4726.50,3 +2329,4726.50,4726.50,4726.50,4726.50,0 +2330,4726.25,4726.25,4725.75,4725.75,2 +2331,4725.50,4726.00,4724.50,4724.50,7 +2332,4724.75,4724.75,4724.75,4724.75,1 +2333,4724.75,4724.75,4724.75,4724.75,0 +2334,4724.50,4724.50,4724.25,4724.25,2 +2335,4724.00,4724.25,4724.00,4724.25,2 +2336,4724.25,4724.50,4724.25,4724.50,1 +2337,4724.75,4724.75,4724.75,4724.75,1 +2338,4724.25,4724.25,4724.25,4724.25,1 +2339,4724.25,4724.25,4724.00,4724.25,2 +2340,4724.25,4724.50,4724.25,4724.50,1 +2341,4724.75,4724.75,4724.50,4724.50,2 +2342,4724.75,4724.75,4724.50,4724.75,5 +2343,4725.00,4725.00,4725.00,4725.00,1 +2344,4724.75,4724.75,4724.75,4724.75,1 +2345,4724.75,4724.75,4724.50,4724.50,1 +2346,4725.00,4725.25,4725.00,4725.25,2 +2347,4725.25,4725.25,4725.00,4725.00,1 +2348,4725.25,4725.25,4725.25,4725.25,1 +2349,4725.75,4725.75,4725.75,4725.75,1 +2350,4725.75,4725.75,4725.75,4725.75,0 +2351,4726.00,4727.25,4726.00,4726.25,7 +2352,4726.25,4726.75,4726.25,4726.50,3 +2353,4726.25,4726.50,4726.25,4726.50,2 +2355,4726.75,4726.75,4726.75,4726.75,1 +2356,4726.75,4726.75,4726.75,4726.75,0 +2357,4727.00,4727.00,4727.00,4727.00,1 +2358,4727.50,4727.50,4727.50,4727.50,1 +2359,4727.25,4727.25,4727.25,4727.25,1 +0000,4726.50,4726.75,4726.00,4726.00,3 +0001,4725.75,4725.75,4725.50,4725.50,4 +0002,4725.25,4725.75,4725.25,4725.75,2 +0003,4725.75,4725.75,4725.75,4725.75,0 +0009,4726.25,4726.25,4726.25,4726.25,1 +0010,4726.00,4726.25,4726.00,4726.25,2 +0012,4725.75,4725.75,4725.75,4725.75,1 +0018,4725.50,4725.50,4725.50,4725.50,1 +0020,4725.50,4725.75,4725.25,4725.25,2 +0021,4725.25,4725.25,4725.25,4725.25,0 +0022,4725.50,4725.50,4725.50,4725.50,1 +0023,4726.00,4726.00,4725.50,4725.50,2 +0025,4725.25,4725.25,4725.00,4725.00,2 +0026,4725.50,4725.50,4725.50,4725.50,1 +0027,4725.50,4725.75,4725.50,4725.75,1 +0029,4725.75,4725.75,4725.75,4725.75,0 +0030,4725.25,4725.75,4725.25,4725.75,3 +0031,4725.75,4725.75,4725.75,4725.75,0 +0033,4726.00,4726.25,4726.00,4726.25,2 +0034,4726.25,4726.25,4726.25,4726.25,0 +0037,4726.00,4726.00,4726.00,4726.00,1 +0038,4725.75,4725.75,4725.75,4725.75,1 +0039,4726.00,4726.00,4725.75,4725.75,2 +0042,4726.00,4726.25,4726.00,4726.25,2 +0044,4726.25,4726.25,4726.25,4726.25,0 +0045,4726.00,4726.00,4725.75,4725.75,2 +0046,4725.75,4725.75,4725.25,4725.25,1 +0048,4725.75,4725.75,4725.75,4725.75,1 +0049,4726.00,4726.00,4726.00,4726.00,1 +0050,4726.00,4726.00,4726.00,4726.00,0 +0051,4725.75,4726.50,4725.75,4726.50,3 +0052,4726.50,4726.50,4726.50,4726.50,0 +0055,4726.25,4726.25,4726.25,4726.25,1 +0056,4726.50,4726.50,4726.00,4726.00,2 +0057,4726.00,4726.00,4726.00,4726.00,0 +0058,4725.75,4725.75,4725.00,4725.25,4 +0059,4725.75,4725.75,4725.75,4725.75,1 +0102,4726.50,4726.50,4726.25,4726.25,2 +0104,4726.75,4726.75,4726.25,4726.25,3 +0105,4726.75,4726.75,4726.75,4726.75,1 +0106,4727.00,4727.50,4727.00,4727.50,2 +0107,4727.50,4727.50,4727.50,4727.50,0 +0108,4727.50,4727.50,4727.50,4727.50,0 +0109,4728.00,4728.00,4728.00,4728.00,1 +0110,4728.25,4728.75,4728.25,4728.75,5 +0111,4728.25,4728.25,4728.25,4728.25,1 +0112,4728.25,4728.50,4728.25,4728.50,1 +0114,4728.75,4729.00,4728.75,4729.00,2 +0115,4728.75,4729.00,4728.75,4729.00,2 +0116,4729.00,4729.25,4729.00,4729.25,1 +0117,4729.25,4729.25,4729.25,4729.25,0 +0118,4729.25,4729.50,4729.25,4729.50,1 +0119,4729.50,4729.50,4729.00,4729.00,2 +0120,4729.25,4729.25,4729.25,4729.25,1 +0122,4729.25,4729.25,4729.25,4729.25,0 +0123,4729.00,4729.00,4729.00,4729.00,1 +0124,4728.50,4728.50,4728.50,4728.50,1 +0125,4728.50,4729.50,4728.50,4729.25,5 +0126,4729.50,4730.00,4729.50,4729.75,5 +0127,4729.75,4729.75,4729.75,4729.75,0 +0128,4730.00,4730.00,4729.50,4729.50,3 +0129,4729.25,4730.00,4729.25,4730.00,2 +0130,4729.75,4730.00,4729.75,4730.00,2 +0131,4729.75,4729.75,4729.75,4729.75,1 +0132,4730.00,4730.00,4730.00,4730.00,1 +0133,4730.25,4730.75,4730.25,4730.50,4 +0134,4730.50,4731.25,4730.50,4731.25,4 +0135,4731.25,4731.25,4731.25,4731.25,0 +0136,4731.25,4731.25,4731.00,4731.25,2 +0137,4731.25,4731.25,4731.25,4731.25,0 +0138,4731.50,4731.75,4731.50,4731.50,5 +0139,4731.25,4731.25,4731.00,4731.00,2 +0140,4731.50,4731.50,4731.50,4731.50,1 +0141,4731.25,4731.50,4731.25,4731.25,3 +0142,4731.25,4731.75,4731.00,4731.75,4 +0143,4732.50,4732.50,4732.50,4732.50,1 +0144,4732.25,4732.25,4732.25,4732.25,1 +0145,4732.00,4732.25,4732.00,4732.00,3 +0146,4731.75,4732.25,4731.75,4732.25,2 +0147,4732.25,4732.25,4732.25,4732.25,0 +0148,4732.25,4732.25,4732.25,4732.25,0 +0149,4732.50,4732.50,4732.50,4732.50,1 +0150,4732.50,4732.50,4732.25,4732.25,1 +0151,4732.00,4732.25,4732.00,4732.25,2 +0152,4732.25,4732.50,4732.25,4732.50,1 +0153,4732.25,4732.25,4732.25,4732.25,1 +0154,4732.75,4732.75,4732.25,4732.25,3 +0155,4732.50,4732.75,4732.50,4732.75,2 +0157,4732.75,4732.75,4732.75,4732.75,0 +0158,4732.50,4732.50,4732.50,4732.50,1 +0159,4732.75,4732.75,4732.25,4732.25,2 +0200,4732.25,4732.50,4732.25,4732.25,4 +0201,4732.25,4732.25,4731.75,4732.00,2 +0202,4732.25,4732.25,4732.25,4732.25,1 +0203,4732.50,4732.50,4732.00,4732.00,3 +0204,4732.25,4732.75,4732.25,4732.75,5 +0205,4732.75,4733.00,4732.50,4732.50,5 +0206,4733.00,4733.00,4732.50,4732.75,6 +0207,4732.50,4732.50,4732.25,4732.25,2 +0208,4731.75,4732.00,4731.75,4732.00,2 +0209,4732.50,4732.50,4732.00,4732.25,4 +0210,4732.25,4732.50,4732.00,4732.00,3 +0211,4732.25,4732.50,4732.00,4732.50,4 +0212,4732.00,4732.00,4732.00,4732.00,1 +0213,4732.00,4732.25,4731.75,4732.25,5 +0214,4732.00,4732.00,4731.25,4731.25,3 +0215,4731.50,4731.50,4730.75,4731.25,5 +0216,4731.75,4731.75,4730.75,4730.75,5 +0217,4730.75,4731.00,4730.75,4730.75,2 +0218,4731.25,4731.75,4731.25,4731.75,3 +0219,4732.00,4732.00,4731.25,4731.25,3 +0220,4731.50,4731.50,4731.25,4731.25,2 +0221,4731.00,4731.00,4730.25,4730.50,4 +0222,4730.25,4730.25,4730.25,4730.25,1 +0223,4729.75,4730.00,4729.75,4730.00,2 +0224,4730.00,4730.25,4729.75,4730.25,4 +0225,4730.25,4730.25,4730.00,4730.00,1 +0226,4731.00,4731.00,4730.75,4730.75,2 +0227,4731.25,4731.25,4731.00,4731.25,3 +0228,4731.50,4731.75,4731.50,4731.75,2 +0229,4730.50,4730.50,4730.50,4730.50,1 +0230,4731.00,4731.75,4731.00,4731.50,4 +0231,4731.50,4731.50,4730.50,4730.50,4 +0232,4730.50,4731.50,4730.50,4731.50,2 +0233,4731.75,4731.75,4731.75,4731.75,1 +0234,4731.75,4731.75,4731.75,4731.75,0 +0235,4731.00,4731.00,4731.00,4731.00,1 +0236,4730.25,4730.75,4730.00,4730.75,3 +0237,4730.50,4730.50,4729.75,4729.75,3 +0238,4729.75,4730.25,4729.75,4730.25,1 +0239,4729.75,4730.00,4729.75,4730.00,2 +0240,4730.50,4731.00,4730.50,4731.00,3 +0241,4731.00,4731.25,4731.00,4731.25,1 +0242,4731.75,4731.75,4731.75,4731.75,1 +0243,4731.75,4732.00,4731.75,4731.75,2 +0244,4731.25,4731.25,4731.25,4731.25,1 +0245,4731.00,4731.00,4730.75,4731.00,3 +0246,4730.50,4730.75,4729.75,4729.75,5 +0247,4730.00,4731.00,4730.00,4731.00,10 +0248,4731.00,4731.00,4731.00,4731.00,0 +0249,4730.50,4730.50,4730.50,4730.50,1 +0250,4730.25,4730.75,4730.25,4730.75,2 +0251,4731.00,4731.25,4731.00,4731.00,3 +0252,4730.75,4731.25,4730.75,4731.25,2 +0253,4731.50,4732.00,4731.50,4731.75,4 +0254,4732.25,4732.50,4732.25,4732.50,2 +0255,4732.50,4732.50,4732.50,4732.50,0 +0256,4732.75,4733.00,4732.75,4733.00,2 +0257,4732.75,4732.75,4732.75,4732.75,1 +0258,4733.00,4733.50,4732.75,4733.50,11 +0259,4733.25,4733.75,4733.00,4733.00,36 +0300,4732.75,4732.75,4732.25,4732.50,14 +0301,4732.25,4732.75,4732.25,4732.75,6 +0302,4732.50,4732.50,4732.00,4732.50,3 +0303,4731.50,4731.75,4731.50,4731.75,2 +0304,4731.50,4731.50,4731.00,4731.00,3 +0305,4731.00,4732.00,4730.25,4732.00,7 +0306,4731.75,4732.50,4731.75,4732.50,6 +0307,4732.75,4733.00,4732.25,4732.50,6 +0308,4732.75,4733.00,4732.25,4732.75,11 +0309,4732.75,4733.00,4732.25,4733.00,58 +0310,4733.00,4733.00,4732.50,4733.00,6 +0311,4733.25,4733.25,4733.00,4733.00,2 +0312,4733.00,4733.25,4732.50,4732.75,9 +0313,4732.50,4732.75,4732.00,4732.50,7 +0314,4732.75,4733.25,4732.50,4733.25,5 +0315,4733.00,4733.25,4733.00,4733.00,3 +0316,4733.25,4733.50,4732.75,4732.75,17 +0317,4732.75,4733.00,4732.75,4733.00,1 +0318,4733.25,4733.25,4733.00,4733.00,2 +0319,4732.75,4733.50,4732.75,4733.50,4 +0320,4733.50,4733.75,4733.00,4733.50,8 +0321,4733.25,4733.75,4733.25,4733.50,3 +0322,4733.50,4733.75,4733.25,4733.25,4 +0323,4733.75,4733.75,4733.75,4733.75,1 +0324,4734.00,4734.25,4734.00,4734.00,3 +0325,4734.00,4734.00,4734.00,4734.00,0 +0326,4734.25,4734.25,4733.75,4733.75,3 +0327,4733.75,4733.75,4733.50,4733.50,1 +0328,4733.50,4733.50,4733.50,4733.50,0 +0329,4733.75,4734.00,4733.75,4734.00,2 +0330,4734.00,4734.00,4733.50,4733.50,2 +0331,4733.50,4733.75,4733.50,4733.75,1 +0332,4733.50,4733.50,4733.00,4733.00,3 +0333,4733.00,4733.25,4733.00,4733.25,1 +0334,4733.75,4734.00,4733.75,4734.00,2 +0335,4733.50,4733.50,4733.50,4733.50,1 +0336,4734.00,4734.00,4733.75,4733.75,2 +0337,4734.00,4734.00,4734.00,4734.00,1 +0339,4734.50,4734.50,4734.00,4734.25,4 +0340,4733.75,4733.75,4733.50,4733.50,2 +0341,4734.00,4734.00,4733.00,4733.00,3 +0342,4733.25,4733.50,4733.25,4733.50,2 +0343,4734.00,4734.00,4734.00,4734.00,1 +0344,4734.25,4734.50,4734.25,4734.25,3 +0345,4734.25,4734.25,4734.25,4734.25,0 +0346,4734.50,4734.50,4734.50,4734.50,1 +0347,4734.25,4734.25,4734.25,4734.25,1 +0349,4734.50,4734.75,4734.50,4734.50,3 +0350,4734.25,4734.25,4734.25,4734.25,1 +0352,4734.75,4735.00,4734.75,4734.75,3 +0353,4734.75,4734.75,4734.75,4734.75,0 +0354,4734.50,4734.50,4734.50,4734.50,1 +0355,4734.75,4735.00,4734.75,4734.75,3 +0356,4734.50,4735.00,4734.50,4734.75,4 +0357,4734.75,4735.00,4734.75,4735.00,1 +0359,4734.50,4734.50,4734.50,4734.50,1 +0401,4735.00,4735.25,4735.00,4735.25,4 +0402,4735.50,4735.50,4735.25,4735.25,2 +0403,4735.00,4735.00,4735.00,4735.00,1 +0404,4735.25,4735.25,4735.25,4735.25,1 +0405,4735.25,4735.25,4735.25,4735.25,0 +0406,4734.75,4734.75,4734.75,4734.75,1 +0407,4735.25,4735.50,4735.25,4735.25,3 +0408,4735.50,4735.50,4735.00,4735.00,4 +0409,4735.25,4735.25,4735.25,4735.25,1 +0410,4735.50,4735.50,4735.25,4735.25,2 +0411,4735.25,4735.50,4735.25,4735.25,4 +0412,4735.25,4735.50,4735.25,4735.25,4 +0413,4735.50,4735.75,4735.50,4735.75,2 +0414,4735.75,4736.00,4735.75,4736.00,1 +0415,4735.75,4735.75,4735.50,4735.75,3 +0416,4735.75,4736.00,4735.75,4736.00,1 +0417,4736.00,4736.50,4736.00,4736.50,4 +0418,4736.50,4736.50,4736.25,4736.25,1 +0419,4736.50,4736.50,4736.50,4736.50,1 +0420,4736.25,4736.25,4735.75,4735.75,3 +0421,4735.75,4735.75,4735.25,4735.25,2 +0422,4735.75,4736.25,4735.75,4736.25,2 +0423,4735.75,4735.75,4735.75,4735.75,1 +0424,4735.50,4735.50,4735.25,4735.25,2 +0425,4735.00,4735.75,4735.00,4735.75,5 +0426,4735.75,4735.75,4735.00,4735.25,3 +0427,4735.25,4735.25,4735.25,4735.25,0 +0428,4735.25,4735.75,4735.25,4735.75,1 +0429,4735.75,4735.75,4735.75,4735.75,0 +0430,4735.50,4735.50,4735.00,4735.00,2 +0432,4734.75,4734.75,4734.75,4734.75,1 +0433,4734.75,4735.00,4734.50,4734.50,3 +0434,4734.50,4734.75,4734.00,4734.00,3 +0435,4734.25,4734.50,4734.25,4734.25,3 +0436,4734.00,4734.25,4734.00,4734.25,2 +0437,4734.25,4734.25,4734.00,4734.25,2 +0438,4734.25,4734.25,4734.00,4734.00,3 +0439,4733.75,4733.75,4733.25,4733.50,3 +0440,4733.00,4733.00,4732.50,4733.00,5 +0441,4732.75,4732.75,4732.25,4732.25,3 +0442,4732.50,4732.50,4732.25,4732.25,2 +0443,4732.25,4732.25,4732.25,4732.25,0 +0444,4732.25,4732.50,4732.25,4732.50,1 +0445,4732.00,4732.25,4732.00,4732.00,3 +0446,4732.00,4732.00,4732.00,4732.00,0 +0447,4732.75,4732.75,4732.75,4732.75,1 +0448,4732.50,4732.75,4732.50,4732.50,5 +0449,4733.25,4733.25,4733.00,4733.00,2 +0450,4733.75,4734.25,4733.50,4734.25,6 +0451,4733.75,4734.00,4733.75,4734.00,2 +0452,4733.50,4733.50,4733.00,4733.00,3 +0453,4733.25,4733.25,4732.75,4732.75,2 +0454,4733.00,4733.25,4733.00,4733.25,2 +0455,4733.25,4733.25,4733.25,4733.25,0 +0456,4733.25,4733.25,4733.25,4733.25,0 +0457,4733.50,4734.25,4733.50,4734.25,2 +0458,4734.00,4734.00,4733.50,4733.50,2 +0459,4733.25,4733.25,4733.25,4733.25,1 +0500,4733.25,4733.25,4733.00,4733.00,1 +0501,4733.00,4733.25,4733.00,4733.25,1 +0502,4732.75,4732.75,4732.50,4732.75,3 +0503,4732.50,4732.50,4732.50,4732.50,1 +0504,4732.75,4732.75,4732.25,4732.50,4 +0505,4732.75,4732.75,4732.75,4732.75,1 +0507,4733.25,4733.50,4733.25,4733.25,3 +0508,4733.25,4733.50,4733.00,4733.50,2 +0509,4733.25,4733.25,4733.25,4733.25,1 +0510,4733.25,4733.50,4733.25,4733.50,1 +0511,4733.75,4733.75,4733.75,4733.75,1 +0512,4733.75,4734.25,4733.75,4734.25,2 +0513,4734.25,4734.25,4734.00,4734.00,1 +0514,4734.00,4734.25,4734.00,4734.25,1 +0515,4734.25,4734.25,4734.00,4734.00,1 +0516,4734.00,4734.00,4733.75,4733.75,1 +0517,4733.75,4734.25,4733.75,4734.25,1 +0518,4734.25,4734.75,4734.25,4734.75,2 +0519,4734.50,4734.50,4734.50,4734.50,1 +0520,4734.75,4734.75,4734.50,4734.50,2 +0522,4734.25,4734.25,4734.00,4734.00,2 +0523,4733.75,4733.75,4733.50,4733.50,2 +0524,4733.75,4733.75,4733.75,4733.75,1 +0526,4734.00,4734.00,4734.00,4734.00,1 +0527,4733.75,4734.00,4733.50,4734.00,4 +0528,4734.00,4734.00,4734.00,4734.00,0 +0529,4734.25,4734.25,4734.25,4734.25,1 +0530,4734.25,4734.25,4734.25,4734.25,0 +0531,4734.50,4734.50,4734.50,4734.50,1 +0532,4734.50,4734.75,4734.50,4734.75,1 +0533,4734.25,4734.25,4734.25,4734.25,1 +0534,4734.25,4734.25,4734.25,4734.25,0 +0535,4734.25,4734.25,4734.25,4734.25,0 +0536,4734.00,4734.00,4733.75,4733.75,2 +0537,4734.00,4734.00,4734.00,4734.00,1 +0538,4733.75,4734.00,4733.75,4734.00,2 +0539,4734.25,4734.25,4734.25,4734.25,1 +0540,4734.50,4735.00,4734.50,4734.75,3 +0541,4734.50,4734.50,4734.50,4734.50,1 +0542,4734.25,4734.25,4734.25,4734.25,1 +0543,4733.75,4734.00,4733.75,4734.00,2 +0544,4734.00,4734.25,4734.00,4734.25,1 +0545,4734.00,4734.50,4734.00,4734.50,3 +0547,4735.00,4735.00,4735.00,4735.00,1 +0548,4735.50,4736.00,4735.50,4736.00,5 +0549,4735.50,4735.75,4735.50,4735.50,5 +0550,4735.50,4735.50,4735.00,4735.50,3 +0551,4735.50,4735.75,4735.50,4735.50,2 +0552,4735.75,4735.75,4735.75,4735.75,1 +0553,4735.50,4735.50,4735.50,4735.50,1 +0554,4735.75,4735.75,4735.50,4735.50,2 +0555,4735.25,4735.25,4735.00,4735.25,3 +0556,4735.25,4735.25,4735.25,4735.25,0 +0557,4735.00,4735.00,4734.25,4734.25,2 +0558,4734.25,4734.25,4734.25,4734.25,0 +0559,4734.50,4734.50,4734.00,4734.00,5 +0600,4733.75,4733.75,4733.75,4733.75,1 +0601,4733.75,4734.25,4733.75,4734.25,2 +0602,4734.00,4734.50,4733.75,4734.50,4 +0603,4734.25,4734.25,4734.25,4734.25,1 +0604,4733.50,4733.50,4733.25,4733.50,5 +0605,4733.25,4733.25,4733.00,4733.25,3 +0606,4733.50,4733.75,4733.50,4733.75,4 +0607,4734.00,4734.25,4733.75,4734.25,4 +0608,4734.00,4734.25,4734.00,4734.00,5 +0609,4734.00,4734.00,4733.25,4733.50,4 +0610,4733.25,4733.25,4733.00,4733.25,3 +0611,4733.25,4733.75,4733.25,4733.25,5 +0612,4733.25,4733.25,4733.00,4733.25,2 +0613,4733.50,4733.75,4733.25,4733.25,3 +0614,4733.00,4733.00,4733.00,4733.00,1 +0615,4733.00,4733.00,4733.00,4733.00,0 +0616,4733.25,4733.25,4733.25,4733.25,1 +0617,4733.00,4733.00,4732.50,4733.00,4 +0618,4733.00,4733.25,4733.00,4733.25,1 +0619,4733.50,4733.75,4733.50,4733.75,2 +0620,4733.75,4733.75,4733.50,4733.50,1 +0621,4733.50,4733.50,4733.25,4733.50,2 +0623,4733.25,4733.75,4733.00,4733.75,5 +0624,4733.75,4734.00,4733.75,4734.00,1 +0625,4734.00,4734.25,4734.00,4734.25,1 +0626,4734.25,4734.50,4734.00,4734.50,2 +0627,4734.25,4734.25,4734.00,4734.00,2 +0628,4734.50,4734.50,4734.50,4734.50,1 +0629,4734.00,4734.00,4734.00,4734.00,1 +0630,4734.00,4734.00,4734.00,4734.00,0 +0631,4733.75,4733.75,4733.50,4733.75,3 +0632,4733.50,4733.50,4733.25,4733.25,2 +0633,4733.25,4733.25,4733.25,4733.25,0 +0634,4733.25,4733.75,4733.25,4733.75,2 +0635,4733.75,4734.00,4733.75,4734.00,1 +0636,4734.00,4734.25,4734.00,4734.25,1 +0637,4734.50,4734.50,4734.25,4734.25,2 +0638,4734.25,4734.25,4734.00,4734.00,1 +0639,4734.00,4734.00,4733.75,4733.75,1 +0640,4734.00,4734.00,4733.50,4733.50,3 +0641,4733.25,4733.25,4733.25,4733.25,1 +0642,4733.00,4733.00,4732.75,4732.75,2 +0643,4732.75,4732.75,4732.25,4732.25,2 +0644,4732.00,4732.00,4731.75,4731.75,2 +0645,4731.50,4732.00,4731.50,4732.00,5 +0646,4731.75,4731.75,4731.50,4731.50,4 +0647,4731.25,4731.75,4731.00,4731.75,5 +0648,4731.75,4732.00,4731.75,4732.00,1 +0649,4731.25,4731.25,4730.75,4731.00,4 +0650,4731.00,4731.00,4730.25,4730.50,5 +0651,4730.50,4730.75,4730.50,4730.75,5 +0652,4730.75,4730.75,4730.25,4730.25,4 +0653,4730.25,4730.50,4730.25,4730.25,8 +0654,4730.75,4730.75,4730.50,4730.50,6 +0655,4730.50,4730.50,4730.00,4730.00,4 +0656,4729.75,4729.75,4729.25,4729.25,5 +0657,4729.00,4729.75,4728.75,4729.50,9 +0658,4729.25,4729.25,4728.75,4729.25,3 +0659,4729.50,4730.00,4729.50,4730.00,3 +0700,4730.00,4730.50,4729.75,4730.50,4 +0701,4730.25,4731.00,4730.00,4730.00,9 +0702,4730.00,4730.25,4730.00,4730.00,2 +0703,4730.25,4730.25,4729.00,4729.00,9 +0704,4729.00,4729.75,4729.00,4729.25,4 +0705,4729.00,4730.00,4729.00,4729.75,6 +0706,4729.50,4729.50,4729.50,4729.50,1 +0707,4729.25,4729.50,4729.25,4729.50,4 +0708,4729.25,4729.50,4728.75,4728.75,4 +0709,4729.75,4730.00,4729.75,4729.75,5 +0710,4729.50,4730.50,4729.50,4730.50,5 +0711,4730.50,4731.00,4730.25,4730.50,4 +0712,4730.50,4730.50,4730.00,4730.00,1 +0713,4730.25,4730.25,4730.25,4730.25,1 +0714,4730.25,4730.25,4730.00,4730.00,1 +0715,4730.50,4730.75,4730.50,4730.50,3 +0716,4730.50,4731.00,4729.75,4730.00,10 +0717,4730.00,4730.25,4729.50,4729.50,5 +0718,4729.25,4729.25,4728.75,4729.00,6 +0719,4729.00,4729.00,4728.75,4728.75,1 +0720,4729.00,4729.00,4728.50,4729.00,4 +0721,4729.25,4729.50,4728.75,4728.75,5 +0722,4728.50,4728.50,4727.75,4728.25,8 +0723,4728.25,4729.25,4728.25,4729.25,6 +0724,4729.25,4729.75,4729.25,4729.75,2 +0725,4729.50,4729.50,4729.00,4729.50,3 +0726,4729.50,4730.25,4729.50,4730.25,3 +0727,4730.50,4731.00,4730.50,4730.50,7 +0728,4731.00,4731.50,4730.75,4730.75,5 +0729,4730.50,4731.75,4730.25,4731.25,16 +0730,4731.75,4740.50,4729.75,4732.25,56 +0731,4732.50,4733.00,4732.00,4732.25,10 +0732,4731.75,4731.75,4728.00,4728.00,14 +0733,4728.75,4729.75,4727.25,4727.25,21 +0734,4727.50,4727.50,4725.25,4726.25,32 +0735,4726.50,4726.75,4725.75,4726.50,9 +0736,4726.00,4726.00,4723.00,4723.25,20 +0737,4723.00,4725.00,4723.00,4724.75,18 +0738,4725.00,4725.25,4722.25,4722.50,11 +0739,4722.00,4722.00,4718.25,4718.75,66 +0740,4718.50,4720.50,4717.25,4720.00,42 +0741,4719.25,4719.25,4716.50,4716.50,21 +0742,4716.50,4718.00,4714.25,4715.50,29 +0743,4715.50,4717.50,4713.50,4717.25,36 +0744,4717.00,4722.25,4717.00,4719.00,46 +0745,4719.25,4719.25,4717.50,4719.00,11 +0746,4718.75,4720.00,4718.00,4719.50,13 +0747,4719.00,4719.25,4717.50,4717.50,17 +0748,4717.25,4719.00,4716.75,4717.00,18 +0749,4717.75,4719.50,4717.75,4718.50,22 +0750,4718.75,4719.50,4718.00,4719.50,14 +0751,4719.75,4720.25,4719.25,4719.25,21 +0752,4719.50,4720.25,4718.50,4720.00,14 +0753,4720.25,4721.50,4720.00,4720.75,12 +0754,4720.75,4722.75,4720.75,4721.75,22 +0755,4721.75,4722.75,4721.50,4721.50,13 +0756,4721.50,4721.75,4719.75,4720.25,16 +0757,4720.00,4722.25,4720.00,4721.75,14 +0758,4722.25,4722.75,4721.50,4722.00,15 +0759,4721.75,4722.00,4720.75,4721.75,16 +0800,4721.75,4722.00,4719.75,4720.00,19 +0801,4720.50,4721.50,4720.25,4721.50,6 +0802,4721.00,4722.25,4721.00,4721.75,6 +0803,4722.00,4723.25,4722.00,4723.00,14 +0804,4723.25,4724.25,4722.00,4722.00,38 +0805,4722.25,4722.50,4720.75,4721.00,13 +0806,4722.00,4723.00,4722.00,4723.00,12 +0807,4723.00,4724.25,4723.00,4724.25,19 +0808,4724.00,4724.25,4723.50,4724.25,11 +0809,4724.00,4725.00,4724.00,4724.75,10 +0810,4724.50,4724.75,4724.50,4724.75,4 +0811,4724.75,4725.25,4724.00,4725.00,12 +0812,4725.25,4725.50,4724.75,4724.75,7 +0813,4724.75,4725.75,4724.75,4725.25,9 +0814,4726.00,4726.50,4725.75,4726.00,14 +0815,4726.00,4727.50,4725.00,4727.00,19 +0816,4727.25,4727.75,4726.75,4727.50,20 +0817,4727.00,4727.25,4726.25,4727.25,12 +0818,4727.50,4728.00,4727.50,4727.50,5 +0819,4727.50,4727.75,4726.50,4726.50,21 +0820,4726.50,4726.50,4723.25,4725.50,23 +0821,4725.75,4727.50,4725.75,4727.50,13 +0822,4727.25,4727.50,4726.25,4726.50,16 +0823,4726.50,4726.50,4725.00,4725.00,8 +0824,4725.00,4725.75,4724.75,4725.00,9 +0825,4724.50,4724.50,4720.00,4720.00,50 +0826,4720.25,4720.25,4717.50,4718.25,69 +0827,4717.75,4720.25,4716.75,4717.25,49 +0828,4717.75,4717.75,4702.75,4714.00,116 +0829,4714.00,4718.75,4711.25,4716.50,63 +0847,4694.25,4694.25,4694.25,4694.25,1 diff --git a/src/MidasAgent/data/MES2023Z.txt b/src/MidasAgent/data/MES2023Z.txt new file mode 100644 index 0000000..5c87590 --- /dev/null +++ b/src/MidasAgent/data/MES2023Z.txt @@ -0,0 +1,1000 @@ +MES2023Z,20231214,1306,4707.00,4707.25,4705.50,4707.25,27,170 +MES2023Z,20231214,1307,4707.25,4707.50,4706.75,4707.00,17,97 +MES2023Z,20231214,1308,4707.25,4707.25,4706.25,4706.50,14,98 +MES2023Z,20231214,1309,4706.50,4706.75,4705.50,4706.00,20,116 +MES2023Z,20231214,1310,4705.75,4707.50,4704.00,4707.50,55,510 +MES2023Z,20231214,1311,4707.50,4708.50,4707.50,4707.75,49,356 +MES2023Z,20231214,1312,4708.00,4710.25,4708.00,4710.25,56,338 +MES2023Z,20231214,1313,4710.00,4710.25,4709.50,4709.50,30,167 +MES2023Z,20231214,1314,4709.50,4709.75,4708.75,4709.00,17,127 +MES2023Z,20231214,1315,4709.00,4709.50,4708.25,4708.75,19,87 +MES2023Z,20231214,1316,4708.50,4710.50,4708.50,4710.25,34,131 +MES2023Z,20231214,1317,4710.25,4711.00,4710.00,4710.50,22,104 +MES2023Z,20231214,1318,4710.50,4711.25,4710.50,4710.75,13,128 +MES2023Z,20231214,1319,4710.75,4712.50,4710.75,4712.25,26,175 +MES2023Z,20231214,1320,4712.25,4712.50,4711.50,4712.00,21,200 +MES2023Z,20231214,1321,4712.00,4713.00,4711.75,4712.25,23,233 +MES2023Z,20231214,1322,4712.50,4713.50,4712.50,4713.25,14,152 +MES2023Z,20231214,1323,4713.25,4714.25,4712.25,4713.25,28,230 +MES2023Z,20231214,1324,4713.25,4714.25,4713.00,4714.25,19,99 +MES2023Z,20231214,1325,4714.25,4714.50,4713.50,4714.25,28,157 +MES2023Z,20231214,1326,4714.00,4715.00,4713.75,4714.00,24,96 +MES2023Z,20231214,1327,4714.25,4714.25,4712.75,4713.50,18,79 +MES2023Z,20231214,1328,4713.50,4713.50,4711.75,4712.75,33,312 +MES2023Z,20231214,1329,4713.00,4714.00,4712.75,4714.00,13,58 +MES2023Z,20231214,1330,4714.00,4714.00,4711.75,4713.00,27,85 +MES2023Z,20231214,1331,4713.00,4713.75,4712.25,4712.75,21,133 +MES2023Z,20231214,1332,4712.25,4713.75,4712.00,4713.00,16,119 +MES2023Z,20231214,1333,4713.25,4713.25,4712.25,4713.25,17,107 +MES2023Z,20231214,1334,4713.50,4715.00,4713.50,4714.25,27,253 +MES2023Z,20231214,1335,4714.00,4714.50,4713.75,4714.25,15,59 +MES2023Z,20231214,1336,4714.50,4715.50,4712.00,4712.25,39,173 +MES2023Z,20231214,1337,4712.25,4714.00,4712.00,4712.50,26,106 +MES2023Z,20231214,1338,4712.50,4714.50,4712.50,4714.00,21,93 +MES2023Z,20231214,1339,4713.75,4713.75,4712.25,4712.25,10,81 +MES2023Z,20231214,1340,4712.25,4712.75,4711.00,4712.25,24,189 +MES2023Z,20231214,1341,4712.50,4712.50,4711.75,4711.75,26,149 +MES2023Z,20231214,1342,4711.50,4712.50,4711.25,4712.50,21,110 +MES2023Z,20231214,1343,4712.50,4713.75,4712.00,4713.75,20,90 +MES2023Z,20231214,1344,4713.75,4714.50,4713.75,4713.75,18,150 +MES2023Z,20231214,1345,4713.75,4714.75,4713.25,4714.00,17,76 +MES2023Z,20231214,1346,4714.00,4715.00,4713.75,4714.50,15,114 +MES2023Z,20231214,1347,4714.50,4714.75,4714.00,4714.75,9,70 +MES2023Z,20231214,1348,4714.75,4716.00,4714.75,4715.50,36,185 +MES2023Z,20231214,1349,4715.50,4716.25,4715.50,4716.00,22,162 +MES2023Z,20231214,1350,4716.25,4716.50,4715.25,4716.00,17,85 +MES2023Z,20231214,1351,4716.00,4716.00,4715.00,4715.50,17,73 +MES2023Z,20231214,1352,4715.75,4716.25,4715.25,4715.75,18,63 +MES2023Z,20231214,1353,4716.00,4716.25,4715.25,4715.25,8,80 +MES2023Z,20231214,1354,4715.25,4715.50,4714.25,4714.50,23,130 +MES2023Z,20231214,1355,4714.50,4716.75,4714.25,4716.75,30,188 +MES2023Z,20231214,1356,4716.75,4717.50,4716.50,4716.75,29,217 +MES2023Z,20231214,1357,4716.50,4716.50,4715.25,4716.00,16,89 +MES2023Z,20231214,1358,4716.00,4717.00,4715.50,4716.25,24,166 +MES2023Z,20231214,1359,4716.25,4717.50,4716.25,4717.00,15,105 +MES2023Z,20231214,1400,4717.00,4717.25,4716.00,4716.50,18,156 +MES2023Z,20231214,1401,4716.75,4718.00,4716.50,4717.50,33,184 +MES2023Z,20231214,1402,4717.50,4718.00,4716.75,4717.75,24,207 +MES2023Z,20231214,1403,4717.75,4718.00,4717.50,4717.75,12,128 +MES2023Z,20231214,1404,4717.75,4718.00,4715.25,4715.25,18,153 +MES2023Z,20231214,1405,4715.00,4716.50,4714.75,4716.25,30,191 +MES2023Z,20231214,1406,4716.00,4718.00,4716.00,4716.50,26,157 +MES2023Z,20231214,1407,4716.25,4716.50,4715.00,4715.75,25,168 +MES2023Z,20231214,1408,4716.00,4718.00,4716.00,4717.25,14,132 +MES2023Z,20231214,1409,4717.25,4719.00,4716.50,4717.00,21,259 +MES2023Z,20231214,1410,4717.00,4717.00,4716.25,4716.50,10,78 +MES2023Z,20231214,1411,4716.50,4717.75,4716.00,4717.75,16,66 +MES2023Z,20231214,1412,4717.50,4720.50,4716.50,4716.75,58,472 +MES2023Z,20231214,1413,4716.75,4717.00,4715.50,4715.50,18,127 +MES2023Z,20231214,1414,4715.75,4717.00,4715.50,4716.25,25,94 +MES2023Z,20231214,1415,4716.25,4716.75,4714.75,4716.75,30,137 +MES2023Z,20231214,1416,4716.75,4717.25,4716.25,4717.25,12,66 +MES2023Z,20231214,1417,4717.25,4718.25,4716.50,4718.00,27,128 +MES2023Z,20231214,1418,4718.00,4718.00,4716.75,4717.50,18,89 +MES2023Z,20231214,1419,4717.50,4718.75,4717.50,4718.50,23,103 +MES2023Z,20231214,1420,4718.50,4718.75,4717.00,4717.50,29,155 +MES2023Z,20231214,1421,4717.00,4718.50,4717.00,4718.25,11,39 +MES2023Z,20231214,1422,4718.25,4719.00,4718.25,4718.75,13,71 +MES2023Z,20231214,1423,4718.50,4718.75,4717.50,4718.00,17,55 +MES2023Z,20231214,1424,4718.25,4718.75,4718.00,4718.75,4,21 +MES2023Z,20231214,1425,4718.75,4719.50,4718.75,4718.75,13,109 +MES2023Z,20231214,1426,4719.00,4719.25,4718.75,4718.75,4,28 +MES2023Z,20231214,1427,4718.50,4719.00,4718.00,4719.00,13,41 +MES2023Z,20231214,1428,4718.75,4719.00,4718.50,4718.75,7,36 +MES2023Z,20231214,1429,4718.75,4719.00,4716.25,4716.50,33,164 +MES2023Z,20231214,1430,4716.75,4718.00,4716.75,4717.25,27,129 +MES2023Z,20231214,1431,4717.00,4717.75,4717.00,4717.50,15,45 +MES2023Z,20231214,1432,4717.25,4718.25,4716.50,4716.75,33,121 +MES2023Z,20231214,1433,4716.75,4717.25,4716.00,4716.75,38,166 +MES2023Z,20231214,1434,4716.50,4717.00,4715.75,4716.00,23,93 +MES2023Z,20231214,1435,4715.75,4717.75,4715.00,4717.00,34,202 +MES2023Z,20231214,1436,4717.25,4718.50,4717.25,4717.75,22,129 +MES2023Z,20231214,1437,4717.50,4717.50,4715.75,4716.75,19,109 +MES2023Z,20231214,1438,4717.00,4717.50,4716.00,4716.25,15,52 +MES2023Z,20231214,1439,4716.25,4716.25,4714.50,4714.75,27,162 +MES2023Z,20231214,1440,4714.75,4715.50,4713.25,4713.75,45,293 +MES2023Z,20231214,1441,4714.00,4716.25,4713.75,4715.25,44,216 +MES2023Z,20231214,1442,4715.25,4715.50,4714.25,4714.50,20,105 +MES2023Z,20231214,1443,4714.25,4717.00,4714.00,4716.25,30,156 +MES2023Z,20231214,1444,4716.00,4716.25,4714.00,4714.25,16,94 +MES2023Z,20231214,1445,4714.25,4715.25,4714.25,4715.25,13,74 +MES2023Z,20231214,1446,4715.50,4718.00,4715.50,4716.50,40,142 +MES2023Z,20231214,1447,4716.25,4717.00,4714.00,4714.75,34,257 +MES2023Z,20231214,1448,4714.75,4715.50,4714.50,4715.50,18,77 +MES2023Z,20231214,1449,4715.25,4715.25,4712.75,4714.25,38,283 +MES2023Z,20231214,1450,4714.00,4717.25,4714.00,4717.25,42,238 +MES2023Z,20231214,1451,4717.50,4718.50,4717.50,4718.25,36,184 +MES2023Z,20231214,1452,4718.50,4718.75,4717.50,4717.75,29,123 +MES2023Z,20231214,1453,4717.50,4717.50,4715.25,4716.75,34,142 +MES2023Z,20231214,1454,4717.00,4717.00,4714.75,4715.25,36,184 +MES2023Z,20231214,1455,4715.50,4717.50,4715.00,4717.25,39,264 +MES2023Z,20231214,1456,4717.25,4717.50,4714.75,4715.00,23,99 +MES2023Z,20231214,1457,4715.00,4717.75,4715.00,4717.75,33,142 +MES2023Z,20231214,1458,4718.00,4719.50,4717.00,4719.25,48,342 +MES2023Z,20231214,1459,4719.00,4723.50,4719.00,4721.75,176,1185 +MES2023Z,20231214,1500,4723.00,4723.75,4721.75,4723.25,87,284 +MES2023Z,20231214,1501,4723.00,4723.25,4722.50,4722.75,33,108 +MES2023Z,20231214,1502,4722.75,4723.00,4720.25,4720.50,32,151 +MES2023Z,20231214,1503,4720.25,4720.50,4718.75,4719.25,16,66 +MES2023Z,20231214,1504,4720.00,4720.25,4719.50,4719.75,12,64 +MES2023Z,20231214,1505,4719.50,4719.75,4718.75,4719.00,19,89 +MES2023Z,20231214,1506,4719.25,4719.75,4718.50,4719.75,10,51 +MES2023Z,20231214,1507,4719.75,4720.00,4719.00,4719.00,9,28 +MES2023Z,20231214,1508,4719.00,4719.25,4718.25,4718.50,6,39 +MES2023Z,20231214,1509,4718.50,4719.25,4718.50,4719.00,6,19 +MES2023Z,20231214,1510,4719.25,4719.25,4718.50,4718.50,6,36 +MES2023Z,20231214,1511,4719.00,4719.50,4718.75,4719.50,7,27 +MES2023Z,20231214,1512,4719.25,4719.50,4718.50,4718.50,7,47 +MES2023Z,20231214,1513,4718.75,4718.75,4718.50,4718.50,12,45 +MES2023Z,20231214,1514,4718.50,4719.00,4717.25,4717.25,16,70 +MES2023Z,20231214,1515,4717.25,4718.25,4717.25,4718.25,4,9 +MES2023Z,20231214,1516,4718.75,4718.75,4717.75,4717.75,2,4 +MES2023Z,20231214,1517,4718.00,4718.25,4717.75,4718.00,4,22 +MES2023Z,20231214,1518,4718.00,4718.50,4718.00,4718.00,4,17 +MES2023Z,20231214,1519,4718.50,4718.75,4718.00,4718.00,3,20 +MES2023Z,20231214,1520,4718.00,4718.00,4717.50,4717.50,5,22 +MES2023Z,20231214,1521,4717.75,4717.75,4716.50,4716.50,4,24 +MES2023Z,20231214,1522,4716.75,4716.75,4716.50,4716.50,2,3 +MES2023Z,20231214,1523,4716.50,4717.00,4716.50,4717.00,1,11 +MES2023Z,20231214,1524,4717.00,4717.50,4717.00,4717.50,1,8 +MES2023Z,20231214,1525,4717.00,4717.50,4716.75,4717.50,6,21 +MES2023Z,20231214,1526,4716.75,4716.75,4716.50,4716.50,2,11 +MES2023Z,20231214,1527,4716.00,4716.25,4716.00,4716.00,3,17 +MES2023Z,20231214,1528,4716.00,4716.00,4715.75,4715.75,1,2 +MES2023Z,20231214,1529,4715.75,4716.00,4715.50,4716.00,2,6 +MES2023Z,20231214,1530,4716.25,4716.50,4716.00,4716.00,3,6 +MES2023Z,20231214,1531,4716.25,4716.50,4716.25,4716.50,2,5 +MES2023Z,20231214,1532,4716.25,4716.25,4715.75,4715.75,3,5 +MES2023Z,20231214,1533,4716.00,4716.75,4715.75,4716.75,4,5 +MES2023Z,20231214,1534,4716.75,4716.75,4716.75,4716.75,0,2 +MES2023Z,20231214,1535,4715.75,4716.50,4715.75,4716.00,5,10 +MES2023Z,20231214,1536,4715.75,4716.00,4715.75,4716.00,2,7 +MES2023Z,20231214,1537,4715.75,4715.75,4715.75,4715.75,1,1 +MES2023Z,20231214,1538,4716.25,4716.50,4716.25,4716.50,2,4 +MES2023Z,20231214,1539,4716.50,4716.75,4716.50,4716.50,2,14 +MES2023Z,20231214,1540,4716.75,4717.00,4716.50,4716.50,4,11 +MES2023Z,20231214,1541,4717.25,4717.25,4717.25,4717.25,1,1 +MES2023Z,20231214,1542,4716.75,4717.25,4716.50,4716.50,3,7 +MES2023Z,20231214,1543,4716.50,4717.75,4716.50,4717.75,3,8 +MES2023Z,20231214,1544,4717.50,4717.50,4717.00,4717.00,3,7 +MES2023Z,20231214,1545,4717.25,4717.50,4716.50,4716.50,7,8 +MES2023Z,20231214,1546,4716.50,4717.75,4716.50,4717.50,7,25 +MES2023Z,20231214,1547,4717.00,4717.25,4716.75,4717.25,4,6 +MES2023Z,20231214,1548,4717.50,4717.50,4717.50,4717.50,1,6 +MES2023Z,20231214,1549,4717.50,4717.50,4717.50,4717.50,0,1 +MES2023Z,20231214,1550,4717.75,4717.75,4717.50,4717.50,2,3 +MES2023Z,20231214,1551,4717.75,4718.25,4717.75,4717.75,6,14 +MES2023Z,20231214,1552,4717.75,4717.75,4717.75,4717.75,0,10 +MES2023Z,20231214,1553,4718.00,4718.25,4717.50,4717.50,4,5 +MES2023Z,20231214,1554,4717.25,4717.50,4717.00,4717.50,3,3 +MES2023Z,20231214,1555,4717.50,4717.75,4717.00,4717.25,8,20 +MES2023Z,20231214,1556,4717.50,4717.75,4717.00,4717.00,5,20 +MES2023Z,20231214,1557,4717.25,4717.50,4717.00,4717.00,5,12 +MES2023Z,20231214,1558,4717.25,4718.00,4716.50,4718.00,7,12 +MES2023Z,20231214,1559,4716.75,4717.25,4716.25,4716.50,6,15 +MES2023Z,20231214,1700,4717.25,4717.75,4715.25,4717.75,13,17 +MES2023Z,20231214,1701,4717.25,4717.25,4714.25,4714.25,10,23 +MES2023Z,20231214,1702,4714.25,4714.25,4714.00,4714.00,1,11 +MES2023Z,20231214,1703,4714.25,4715.00,4714.00,4715.00,3,7 +MES2023Z,20231214,1704,4715.00,4716.25,4714.75,4715.00,7,35 +MES2023Z,20231214,1705,4715.00,4715.00,4715.00,4715.00,0,5 +MES2023Z,20231214,1706,4714.00,4714.00,4713.75,4713.75,2,3 +MES2023Z,20231214,1707,4713.50,4713.50,4711.75,4713.00,17,52 +MES2023Z,20231214,1708,4712.75,4713.50,4712.50,4712.75,7,19 +MES2023Z,20231214,1709,4713.00,4713.25,4713.00,4713.25,2,3 +MES2023Z,20231214,1710,4713.50,4713.50,4713.25,4713.25,2,5 +MES2023Z,20231214,1711,4714.25,4714.25,4714.25,4714.25,1,2 +MES2023Z,20231214,1712,4713.75,4715.00,4713.75,4715.00,4,26 +MES2023Z,20231214,1713,4714.50,4714.50,4714.50,4714.50,1,2 +MES2023Z,20231214,1714,4714.50,4715.00,4714.25,4715.00,6,14 +MES2023Z,20231214,1715,4715.00,4715.25,4714.25,4715.25,2,3 +MES2023Z,20231214,1716,4715.50,4716.00,4715.50,4716.00,2,3 +MES2023Z,20231214,1717,4715.50,4716.25,4715.50,4716.25,4,7 +MES2023Z,20231214,1718,4716.00,4716.00,4716.00,4716.00,1,1 +MES2023Z,20231214,1719,4716.00,4716.50,4715.25,4716.50,5,18 +MES2023Z,20231214,1720,4716.50,4718.75,4716.25,4716.75,21,103 +MES2023Z,20231214,1721,4717.00,4717.00,4716.50,4716.50,3,14 +MES2023Z,20231214,1722,4717.00,4717.00,4717.00,4717.00,1,1 +MES2023Z,20231214,1723,4717.00,4717.00,4716.50,4716.75,2,5 +MES2023Z,20231214,1724,4716.50,4716.50,4716.50,4716.50,1,2 +MES2023Z,20231214,1725,4716.75,4717.75,4716.75,4717.75,4,8 +MES2023Z,20231214,1726,4717.25,4717.50,4717.25,4717.50,2,12 +MES2023Z,20231214,1727,4717.75,4717.75,4717.75,4717.75,1,1 +MES2023Z,20231214,1728,4717.75,4718.25,4717.75,4718.25,1,2 +MES2023Z,20231214,1729,4719.00,4719.25,4718.00,4718.50,8,10 +MES2023Z,20231214,1730,4718.50,4718.50,4718.50,4718.50,0,4 +MES2023Z,20231214,1731,4718.50,4718.75,4718.25,4718.25,2,3 +MES2023Z,20231214,1732,4718.25,4718.25,4718.25,4718.25,0,1 +MES2023Z,20231214,1733,4718.25,4718.25,4718.25,4718.25,0,1 +MES2023Z,20231214,1734,4718.75,4718.75,4718.75,4718.75,1,2 +MES2023Z,20231214,1735,4718.50,4718.50,4718.00,4718.25,4,8 +MES2023Z,20231214,1736,4718.50,4718.50,4717.75,4717.75,5,6 +MES2023Z,20231214,1737,4717.75,4717.75,4717.75,4717.75,0,3 +MES2023Z,20231214,1739,4717.75,4718.00,4717.50,4718.00,2,3 +MES2023Z,20231214,1740,4718.25,4718.25,4718.25,4718.25,1,4 +MES2023Z,20231214,1741,4718.50,4718.50,4718.50,4718.50,1,2 +MES2023Z,20231214,1742,4719.00,4719.25,4718.75,4718.75,3,9 +MES2023Z,20231214,1743,4719.00,4719.00,4718.25,4718.25,3,5 +MES2023Z,20231214,1744,4719.25,4719.25,4719.25,4719.25,1,2 +MES2023Z,20231214,1745,4719.00,4719.00,4718.50,4718.50,2,3 +MES2023Z,20231214,1746,4719.00,4719.00,4719.00,4719.00,1,4 +MES2023Z,20231214,1747,4719.00,4719.00,4719.00,4719.00,0,3 +MES2023Z,20231214,1748,4719.00,4719.00,4719.00,4719.00,0,1 +MES2023Z,20231214,1749,4718.75,4718.75,4718.50,4718.50,2,5 +MES2023Z,20231214,1750,4718.75,4719.25,4718.50,4719.25,5,9 +MES2023Z,20231214,1751,4719.25,4719.25,4719.25,4719.25,0,7 +MES2023Z,20231214,1752,4719.25,4719.50,4719.25,4719.50,1,7 +MES2023Z,20231214,1754,4719.75,4720.00,4719.75,4720.00,4,11 +MES2023Z,20231214,1755,4719.25,4719.75,4719.25,4719.50,3,7 +MES2023Z,20231214,1756,4719.25,4719.50,4718.75,4719.25,5,13 +MES2023Z,20231214,1757,4719.50,4719.50,4719.00,4719.00,2,10 +MES2023Z,20231214,1758,4719.50,4719.50,4719.50,4719.50,1,8 +MES2023Z,20231214,1759,4719.50,4719.75,4719.50,4719.75,1,4 +MES2023Z,20231214,1800,4719.50,4719.75,4719.50,4719.75,2,3 +MES2023Z,20231214,1801,4719.75,4720.00,4719.50,4720.00,3,11 +MES2023Z,20231214,1802,4720.00,4720.50,4720.00,4720.50,2,7 +MES2023Z,20231214,1803,4720.25,4720.75,4720.00,4720.00,5,12 +MES2023Z,20231214,1804,4720.25,4721.50,4719.75,4721.00,18,56 +MES2023Z,20231214,1805,4721.00,4721.00,4720.50,4721.00,3,6 +MES2023Z,20231214,1806,4721.00,4721.25,4721.00,4721.25,1,6 +MES2023Z,20231214,1807,4720.50,4720.50,4720.25,4720.25,2,2 +MES2023Z,20231214,1808,4720.50,4721.25,4720.50,4721.00,5,13 +MES2023Z,20231214,1809,4720.50,4722.00,4720.50,4721.50,5,11 +MES2023Z,20231214,1810,4721.25,4721.50,4721.25,4721.50,2,3 +MES2023Z,20231214,1811,4721.50,4721.50,4721.00,4721.00,1,4 +MES2023Z,20231214,1812,4721.00,4721.25,4721.00,4721.25,1,5 +MES2023Z,20231214,1813,4721.00,4721.00,4721.00,4721.00,1,15 +MES2023Z,20231214,1814,4721.50,4721.50,4721.00,4721.00,3,8 +MES2023Z,20231214,1815,4721.75,4722.25,4721.75,4722.00,4,29 +MES2023Z,20231214,1816,4722.25,4722.25,4721.75,4721.75,3,9 +MES2023Z,20231214,1817,4721.25,4721.25,4720.00,4720.00,6,17 +MES2023Z,20231214,1818,4720.25,4720.75,4720.25,4720.25,5,25 +MES2023Z,20231214,1819,4720.25,4720.50,4720.25,4720.50,3,10 +MES2023Z,20231214,1820,4720.75,4721.00,4720.75,4721.00,2,4 +MES2023Z,20231214,1821,4720.50,4720.50,4720.50,4720.50,1,5 +MES2023Z,20231214,1822,4720.25,4720.25,4720.00,4720.00,2,8 +MES2023Z,20231214,1823,4720.25,4720.25,4720.00,4720.00,2,11 +MES2023Z,20231214,1824,4720.25,4720.50,4720.25,4720.50,2,7 +MES2023Z,20231214,1825,4720.75,4720.75,4720.75,4720.75,1,3 +MES2023Z,20231214,1826,4720.50,4720.50,4720.50,4720.50,1,2 +MES2023Z,20231214,1827,4721.00,4721.00,4720.75,4720.75,2,3 +MES2023Z,20231214,1828,4720.75,4720.75,4720.75,4720.75,0,1 +MES2023Z,20231214,1829,4720.75,4720.75,4720.00,4720.00,2,6 +MES2023Z,20231214,1830,4720.25,4720.25,4720.25,4720.25,1,2 +MES2023Z,20231214,1831,4720.00,4720.25,4720.00,4720.25,2,3 +MES2023Z,20231214,1832,4720.50,4720.50,4720.50,4720.50,1,9 +MES2023Z,20231214,1833,4721.00,4721.00,4720.50,4720.50,2,5 +MES2023Z,20231214,1834,4720.50,4720.50,4720.50,4720.50,0,1 +MES2023Z,20231214,1835,4720.25,4720.25,4720.25,4720.25,1,1 +MES2023Z,20231214,1836,4720.50,4720.50,4720.50,4720.50,1,3 +MES2023Z,20231214,1837,4720.25,4720.25,4720.25,4720.25,1,8 +MES2023Z,20231214,1839,4720.75,4720.75,4720.75,4720.75,1,4 +MES2023Z,20231214,1840,4721.00,4721.00,4721.00,4721.00,1,4 +MES2023Z,20231214,1841,4721.50,4722.00,4721.00,4721.00,4,12 +MES2023Z,20231214,1842,4721.50,4721.50,4721.25,4721.25,2,3 +MES2023Z,20231214,1843,4721.50,4722.00,4721.50,4721.75,4,44 +MES2023Z,20231214,1844,4721.75,4721.75,4721.00,4721.25,4,13 +MES2023Z,20231214,1847,4720.75,4720.75,4720.25,4720.25,5,11 +MES2023Z,20231214,1848,4720.25,4720.25,4719.50,4719.50,3,7 +MES2023Z,20231214,1849,4719.75,4719.75,4719.50,4719.50,2,5 +MES2023Z,20231214,1850,4720.00,4720.50,4720.00,4720.50,3,14 +MES2023Z,20231214,1851,4720.25,4720.25,4720.25,4720.25,1,2 +MES2023Z,20231214,1853,4719.75,4720.00,4719.50,4720.00,4,17 +MES2023Z,20231214,1854,4720.00,4720.00,4720.00,4720.00,0,4 +MES2023Z,20231214,1855,4719.75,4720.00,4719.75,4720.00,2,9 +MES2023Z,20231214,1856,4720.50,4720.50,4720.50,4720.50,1,6 +MES2023Z,20231214,1857,4720.75,4720.75,4720.50,4720.50,4,19 +MES2023Z,20231214,1858,4720.00,4720.00,4719.75,4719.75,2,10 +MES2023Z,20231214,1859,4719.50,4719.75,4719.50,4719.75,2,4 +MES2023Z,20231214,1900,4720.25,4721.00,4720.25,4721.00,3,7 +MES2023Z,20231214,1901,4720.00,4720.00,4719.25,4719.25,2,9 +MES2023Z,20231214,1902,4719.25,4719.50,4718.75,4718.75,6,19 +MES2023Z,20231214,1903,4718.75,4719.00,4718.75,4718.75,2,10 +MES2023Z,20231214,1904,4718.75,4719.25,4718.75,4719.25,2,7 +MES2023Z,20231214,1905,4719.00,4719.25,4718.25,4718.25,8,17 +MES2023Z,20231214,1906,4718.75,4718.75,4717.00,4717.00,14,28 +MES2023Z,20231214,1907,4717.25,4717.25,4716.50,4717.00,10,38 +MES2023Z,20231214,1908,4717.00,4717.25,4716.75,4717.00,4,17 +MES2023Z,20231214,1909,4717.25,4717.25,4717.00,4717.25,5,16 +MES2023Z,20231214,1910,4717.00,4717.25,4716.50,4717.25,5,11 +MES2023Z,20231214,1911,4719.00,4719.25,4719.00,4719.25,2,4 +MES2023Z,20231214,1912,4718.75,4719.00,4718.25,4718.50,4,28 +MES2023Z,20231214,1913,4718.25,4718.25,4718.00,4718.00,2,5 +MES2023Z,20231214,1914,4717.75,4717.75,4717.75,4717.75,1,5 +MES2023Z,20231214,1915,4718.00,4719.25,4718.00,4719.25,7,17 +MES2023Z,20231214,1916,4719.50,4719.50,4719.25,4719.25,4,11 +MES2023Z,20231214,1917,4719.25,4719.25,4719.00,4719.00,1,4 +MES2023Z,20231214,1918,4719.25,4720.25,4719.25,4720.25,5,15 +MES2023Z,20231214,1919,4719.75,4720.00,4719.50,4719.50,6,12 +MES2023Z,20231214,1920,4720.25,4720.25,4720.25,4720.25,1,2 +MES2023Z,20231214,1921,4720.25,4720.25,4720.25,4720.25,0,6 +MES2023Z,20231214,1922,4720.50,4720.50,4720.25,4720.50,3,4 +MES2023Z,20231214,1923,4720.50,4720.50,4720.50,4720.50,0,1 +MES2023Z,20231214,1925,4720.00,4720.00,4719.50,4719.50,2,6 +MES2023Z,20231214,1926,4720.00,4720.00,4720.00,4720.00,1,3 +MES2023Z,20231214,1927,4720.00,4720.00,4720.00,4720.00,0,1 +MES2023Z,20231214,1928,4720.25,4720.25,4720.00,4720.00,2,2 +MES2023Z,20231214,1929,4720.25,4720.50,4720.25,4720.50,2,2 +MES2023Z,20231214,1930,4720.75,4720.75,4720.50,4720.50,2,3 +MES2023Z,20231214,1931,4720.50,4720.75,4720.50,4720.75,1,3 +MES2023Z,20231214,1932,4720.75,4721.00,4720.75,4721.00,1,8 +MES2023Z,20231214,1933,4720.75,4720.75,4720.25,4720.25,2,7 +MES2023Z,20231214,1934,4720.00,4720.00,4719.50,4719.75,6,11 +MES2023Z,20231214,1935,4719.75,4720.25,4719.75,4720.25,2,14 +MES2023Z,20231214,1939,4720.75,4720.75,4720.75,4720.75,1,2 +MES2023Z,20231214,1940,4720.75,4721.00,4720.50,4720.75,4,25 +MES2023Z,20231214,1941,4720.25,4720.25,4720.25,4720.25,1,11 +MES2023Z,20231214,1942,4720.75,4720.75,4720.50,4720.50,2,16 +MES2023Z,20231214,1943,4720.50,4720.50,4720.25,4720.25,1,15 +MES2023Z,20231214,1944,4720.50,4720.50,4720.50,4720.50,1,1 +MES2023Z,20231214,1945,4720.25,4721.00,4720.25,4721.00,3,7 +MES2023Z,20231214,1946,4721.00,4721.00,4721.00,4721.00,0,1 +MES2023Z,20231214,1947,4721.25,4721.25,4721.00,4721.00,2,2 +MES2023Z,20231214,1949,4721.25,4721.25,4721.25,4721.25,1,7 +MES2023Z,20231214,1950,4721.25,4721.25,4720.75,4721.00,3,9 +MES2023Z,20231214,1952,4721.00,4721.00,4720.75,4721.00,2,5 +MES2023Z,20231214,1955,4720.25,4720.50,4720.25,4720.50,2,4 +MES2023Z,20231214,1957,4720.75,4721.00,4720.75,4720.75,3,10 +MES2023Z,20231214,1958,4721.00,4721.00,4720.75,4721.00,3,7 +MES2023Z,20231214,2000,4720.75,4720.75,4720.75,4720.75,1,1 +MES2023Z,20231214,2001,4721.00,4721.00,4721.00,4721.00,1,10 +MES2023Z,20231214,2002,4720.50,4720.50,4720.50,4720.50,1,2 +MES2023Z,20231214,2003,4720.50,4720.50,4720.50,4720.50,0,2 +MES2023Z,20231214,2004,4720.25,4720.25,4720.00,4720.25,5,15 +MES2023Z,20231214,2005,4720.50,4720.75,4720.50,4720.75,2,8 +MES2023Z,20231214,2006,4721.00,4721.25,4721.00,4721.00,3,3 +MES2023Z,20231214,2008,4721.00,4721.25,4721.00,4721.25,1,4 +MES2023Z,20231214,2009,4721.25,4721.25,4721.00,4721.00,1,11 +MES2023Z,20231214,2010,4720.75,4720.75,4720.75,4720.75,1,5 +MES2023Z,20231214,2011,4720.75,4720.75,4720.75,4720.75,0,1 +MES2023Z,20231214,2012,4720.75,4721.00,4720.75,4721.00,1,14 +MES2023Z,20231214,2013,4721.25,4721.25,4721.25,4721.25,1,6 +MES2023Z,20231214,2014,4721.25,4721.50,4721.25,4721.25,2,15 +MES2023Z,20231214,2015,4721.25,4721.75,4721.25,4721.50,3,9 +MES2023Z,20231214,2017,4721.75,4721.75,4721.75,4721.75,1,2 +MES2023Z,20231214,2018,4721.50,4721.75,4721.50,4721.75,2,3 +MES2023Z,20231214,2020,4722.00,4722.25,4721.75,4722.00,5,9 +MES2023Z,20231214,2022,4722.00,4722.25,4722.00,4722.25,1,4 +MES2023Z,20231214,2023,4722.50,4722.50,4722.25,4722.25,2,9 +MES2023Z,20231214,2024,4722.25,4722.75,4722.25,4722.75,4,21 +MES2023Z,20231214,2025,4722.50,4722.75,4722.50,4722.75,2,5 +MES2023Z,20231214,2026,4723.00,4723.25,4723.00,4723.25,2,12 +MES2023Z,20231214,2027,4723.00,4723.25,4723.00,4723.25,4,14 +MES2023Z,20231214,2028,4723.25,4723.25,4723.00,4723.25,2,23 +MES2023Z,20231214,2029,4723.00,4723.25,4723.00,4723.00,3,12 +MES2023Z,20231214,2030,4723.25,4723.50,4723.25,4723.50,2,8 +MES2023Z,20231214,2031,4723.25,4723.25,4723.25,4723.25,1,9 +MES2023Z,20231214,2032,4723.25,4723.50,4723.25,4723.50,1,7 +MES2023Z,20231214,2033,4723.50,4723.50,4723.50,4723.50,0,2 +MES2023Z,20231214,2035,4722.50,4722.50,4722.50,4722.50,1,10 +MES2023Z,20231214,2036,4722.75,4722.75,4722.75,4722.75,1,4 +MES2023Z,20231214,2037,4722.50,4722.50,4722.25,4722.25,2,3 +MES2023Z,20231214,2038,4722.00,4722.00,4721.75,4721.75,2,4 +MES2023Z,20231214,2039,4721.75,4721.75,4721.25,4721.25,2,9 +MES2023Z,20231214,2040,4721.75,4722.00,4721.75,4722.00,2,3 +MES2023Z,20231214,2041,4722.25,4722.25,4722.25,4722.25,1,5 +MES2023Z,20231214,2042,4722.25,4722.25,4722.25,4722.25,0,2 +MES2023Z,20231214,2043,4722.50,4722.50,4722.00,4722.00,2,3 +MES2023Z,20231214,2044,4721.50,4721.50,4721.50,4721.50,1,3 +MES2023Z,20231214,2045,4721.75,4721.75,4721.50,4721.50,2,14 +MES2023Z,20231214,2046,4721.50,4721.50,4721.50,4721.50,0,1 +MES2023Z,20231214,2047,4721.50,4721.50,4721.50,4721.50,0,9 +MES2023Z,20231214,2049,4721.25,4722.00,4721.25,4722.00,3,20 +MES2023Z,20231214,2051,4722.00,4722.00,4722.00,4722.00,0,1 +MES2023Z,20231214,2052,4721.75,4722.00,4721.75,4722.00,2,3 +MES2023Z,20231214,2053,4722.00,4722.25,4721.75,4721.75,2,7 +MES2023Z,20231214,2055,4722.50,4722.50,4722.50,4722.50,1,10 +MES2023Z,20231214,2056,4722.50,4722.75,4722.50,4722.75,3,6 +MES2023Z,20231214,2057,4722.75,4723.00,4722.75,4722.75,2,5 +MES2023Z,20231214,2100,4722.75,4722.75,4722.50,4722.50,1,7 +MES2023Z,20231214,2101,4722.50,4722.50,4722.50,4722.50,0,3 +MES2023Z,20231214,2103,4722.50,4722.50,4722.50,4722.50,0,2 +MES2023Z,20231214,2105,4722.75,4722.75,4722.75,4722.75,1,2 +MES2023Z,20231214,2107,4723.00,4723.00,4722.75,4722.75,2,8 +MES2023Z,20231214,2108,4722.50,4722.50,4722.50,4722.50,1,2 +MES2023Z,20231214,2109,4722.50,4722.75,4722.50,4722.50,4,20 +MES2023Z,20231214,2110,4722.50,4722.75,4722.50,4722.50,2,3 +MES2023Z,20231214,2111,4722.50,4722.50,4722.50,4722.50,0,4 +MES2023Z,20231214,2112,4722.50,4723.00,4722.50,4722.75,3,11 +MES2023Z,20231214,2113,4722.75,4722.75,4722.75,4722.75,0,3 +MES2023Z,20231214,2114,4722.75,4722.75,4722.50,4722.50,1,2 +MES2023Z,20231214,2115,4722.75,4722.75,4722.75,4722.75,1,3 +MES2023Z,20231214,2116,4722.50,4722.50,4722.50,4722.50,1,1 +MES2023Z,20231214,2119,4722.50,4722.50,4722.50,4722.50,0,1 +MES2023Z,20231214,2120,4722.25,4722.25,4722.25,4722.25,1,3 +MES2023Z,20231214,2121,4723.00,4723.00,4723.00,4723.00,1,1 +MES2023Z,20231214,2122,4722.75,4722.75,4722.75,4722.75,1,4 +MES2023Z,20231214,2123,4722.75,4722.75,4722.75,4722.75,0,10 +MES2023Z,20231214,2124,4722.75,4722.75,4722.50,4722.50,1,9 +MES2023Z,20231214,2126,4723.00,4723.00,4723.00,4723.00,1,8 +MES2023Z,20231214,2127,4723.00,4723.00,4723.00,4723.00,0,3 +MES2023Z,20231214,2129,4722.75,4722.75,4722.50,4722.50,2,4 +MES2023Z,20231214,2130,4722.75,4723.00,4722.75,4722.75,3,4 +MES2023Z,20231214,2132,4722.50,4722.50,4722.50,4722.50,1,4 +MES2023Z,20231214,2133,4722.75,4722.75,4722.75,4722.75,1,2 +MES2023Z,20231214,2134,4722.75,4722.75,4722.75,4722.75,0,5 +MES2023Z,20231214,2135,4723.00,4723.00,4723.00,4723.00,1,1 +MES2023Z,20231214,2140,4723.25,4723.50,4723.25,4723.50,2,11 +MES2023Z,20231214,2141,4723.75,4724.00,4723.50,4723.50,4,11 +MES2023Z,20231214,2143,4723.75,4723.75,4723.75,4723.75,1,2 +MES2023Z,20231214,2144,4724.00,4724.00,4724.00,4724.00,1,5 +MES2023Z,20231214,2145,4723.75,4724.00,4723.75,4724.00,2,14 +MES2023Z,20231214,2146,4724.00,4724.00,4724.00,4724.00,0,6 +MES2023Z,20231214,2147,4724.00,4724.00,4724.00,4724.00,0,8 +MES2023Z,20231214,2148,4724.00,4724.00,4724.00,4724.00,0,5 +MES2023Z,20231214,2149,4724.00,4724.25,4724.00,4724.25,1,4 +MES2023Z,20231214,2150,4724.25,4724.25,4724.00,4724.00,1,4 +MES2023Z,20231214,2151,4724.25,4724.25,4724.25,4724.25,1,7 +MES2023Z,20231214,2152,4724.25,4724.25,4724.25,4724.25,0,15 +MES2023Z,20231214,2153,4724.25,4724.25,4724.25,4724.25,0,2 +MES2023Z,20231214,2156,4724.00,4725.00,4724.00,4724.50,6,32 +MES2023Z,20231214,2157,4724.50,4726.25,4724.50,4725.75,13,93 +MES2023Z,20231214,2158,4725.50,4725.50,4725.50,4725.50,1,5 +MES2023Z,20231214,2159,4726.00,4726.00,4725.75,4725.75,4,6 +MES2023Z,20231214,2200,4725.75,4726.00,4725.75,4726.00,1,3 +MES2023Z,20231214,2201,4725.50,4725.50,4725.25,4725.25,2,5 +MES2023Z,20231214,2202,4725.50,4725.50,4725.50,4725.50,1,2 +MES2023Z,20231214,2203,4725.25,4725.25,4725.00,4725.00,2,13 +MES2023Z,20231214,2204,4725.00,4725.00,4725.00,4725.00,0,1 +MES2023Z,20231214,2205,4725.00,4726.00,4725.00,4726.00,6,47 +MES2023Z,20231214,2206,4726.00,4726.00,4725.75,4725.75,1,13 +MES2023Z,20231214,2208,4725.75,4726.25,4725.75,4726.00,3,21 +MES2023Z,20231214,2209,4726.00,4726.00,4725.75,4725.75,1,6 +MES2023Z,20231214,2211,4726.25,4726.25,4726.00,4726.25,3,8 +MES2023Z,20231214,2212,4726.50,4726.50,4726.50,4726.50,1,9 +MES2023Z,20231214,2213,4726.25,4726.50,4726.25,4726.50,2,3 +MES2023Z,20231214,2214,4726.50,4726.50,4726.50,4726.50,0,19 +MES2023Z,20231214,2215,4726.25,4726.50,4726.25,4726.25,3,27 +MES2023Z,20231214,2218,4726.50,4726.50,4726.50,4726.50,1,1 +MES2023Z,20231214,2219,4726.50,4726.75,4726.50,4726.75,1,6 +MES2023Z,20231214,2220,4726.50,4726.50,4726.50,4726.50,1,3 +MES2023Z,20231214,2222,4726.75,4726.75,4726.75,4726.75,1,1 +MES2023Z,20231214,2223,4726.50,4726.50,4726.25,4726.25,2,2 +MES2023Z,20231214,2224,4726.25,4726.25,4726.25,4726.25,0,1 +MES2023Z,20231214,2227,4726.50,4726.50,4726.50,4726.50,1,1 +MES2023Z,20231214,2228,4726.50,4726.50,4726.50,4726.50,0,2 +MES2023Z,20231214,2229,4726.50,4726.75,4726.50,4726.75,1,5 +MES2023Z,20231214,2230,4726.50,4726.50,4726.50,4726.50,1,21 +MES2023Z,20231214,2231,4726.50,4726.50,4726.50,4726.50,0,1 +MES2023Z,20231214,2233,4726.25,4726.25,4726.25,4726.25,1,5 +MES2023Z,20231214,2234,4726.25,4726.50,4726.25,4726.50,1,3 +MES2023Z,20231214,2235,4726.50,4726.50,4726.50,4726.50,0,1 +MES2023Z,20231214,2236,4726.75,4726.75,4726.75,4726.75,1,5 +MES2023Z,20231214,2238,4726.50,4726.75,4726.50,4726.75,2,3 +MES2023Z,20231214,2240,4726.50,4726.50,4726.25,4726.25,2,2 +MES2023Z,20231214,2241,4726.50,4726.50,4726.50,4726.50,1,1 +MES2023Z,20231214,2243,4726.50,4726.50,4726.50,4726.50,0,1 +MES2023Z,20231214,2244,4726.75,4726.75,4726.75,4726.75,1,1 +MES2023Z,20231214,2245,4726.50,4726.50,4726.50,4726.50,1,3 +MES2023Z,20231214,2247,4726.00,4726.25,4726.00,4726.25,2,4 +MES2023Z,20231214,2248,4726.25,4726.25,4726.25,4726.25,0,6 +MES2023Z,20231214,2249,4726.00,4726.00,4725.75,4725.75,2,4 +MES2023Z,20231214,2250,4725.75,4725.75,4725.75,4725.75,0,1 +MES2023Z,20231214,2251,4726.00,4726.00,4725.75,4725.75,2,8 +MES2023Z,20231214,2252,4725.75,4726.00,4725.75,4726.00,1,3 +MES2023Z,20231214,2254,4726.00,4726.25,4726.00,4726.25,1,6 +MES2023Z,20231214,2256,4726.25,4726.25,4726.25,4726.25,0,1 +MES2023Z,20231214,2257,4726.25,4726.25,4726.25,4726.25,0,1 +MES2023Z,20231214,2258,4726.25,4726.50,4726.25,4726.50,1,5 +MES2023Z,20231214,2259,4726.50,4726.50,4726.50,4726.50,0,2 +MES2023Z,20231214,2300,4726.75,4726.75,4726.50,4726.50,2,7 +MES2023Z,20231214,2303,4726.50,4726.50,4726.25,4726.50,2,10 +MES2023Z,20231214,2305,4726.50,4726.50,4726.50,4726.50,0,4 +MES2023Z,20231214,2308,4727.00,4727.25,4727.00,4727.25,2,4 +MES2023Z,20231214,2309,4727.25,4727.50,4727.25,4727.25,2,15 +MES2023Z,20231214,2310,4727.25,4727.25,4727.25,4727.25,0,3 +MES2023Z,20231214,2311,4726.75,4727.00,4726.50,4726.50,4,8 +MES2023Z,20231214,2312,4726.25,4726.25,4726.25,4726.25,1,4 +MES2023Z,20231214,2313,4726.50,4726.50,4726.50,4726.50,1,1 +MES2023Z,20231214,2316,4726.75,4726.75,4726.75,4726.75,1,3 +MES2023Z,20231214,2318,4726.50,4726.50,4726.50,4726.50,1,5 +MES2023Z,20231214,2319,4726.50,4726.50,4726.50,4726.50,0,4 +MES2023Z,20231214,2320,4726.25,4726.25,4726.25,4726.25,1,1 +MES2023Z,20231214,2321,4726.50,4726.50,4725.75,4725.75,3,8 +MES2023Z,20231214,2322,4725.50,4725.50,4725.00,4725.00,2,15 +MES2023Z,20231214,2323,4725.50,4726.00,4725.50,4726.00,2,4 +MES2023Z,20231214,2324,4725.75,4725.75,4725.75,4725.75,1,3 +MES2023Z,20231214,2326,4725.75,4725.75,4725.50,4725.50,1,3 +MES2023Z,20231214,2327,4725.75,4725.75,4725.75,4725.75,1,1 +MES2023Z,20231214,2328,4726.00,4726.50,4726.00,4726.50,3,13 +MES2023Z,20231214,2329,4726.50,4726.50,4726.50,4726.50,0,7 +MES2023Z,20231214,2330,4726.25,4726.25,4725.75,4725.75,2,7 +MES2023Z,20231214,2331,4725.50,4726.00,4724.50,4724.50,7,23 +MES2023Z,20231214,2332,4724.75,4724.75,4724.75,4724.75,1,1 +MES2023Z,20231214,2333,4724.75,4724.75,4724.75,4724.75,0,1 +MES2023Z,20231214,2334,4724.50,4724.50,4724.25,4724.25,2,18 +MES2023Z,20231214,2335,4724.00,4724.25,4724.00,4724.25,2,8 +MES2023Z,20231214,2336,4724.25,4724.50,4724.25,4724.50,1,8 +MES2023Z,20231214,2337,4724.75,4724.75,4724.75,4724.75,1,5 +MES2023Z,20231214,2338,4724.25,4724.25,4724.25,4724.25,1,8 +MES2023Z,20231214,2339,4724.25,4724.25,4724.00,4724.25,2,12 +MES2023Z,20231214,2340,4724.25,4724.50,4724.25,4724.50,1,15 +MES2023Z,20231214,2341,4724.75,4724.75,4724.50,4724.50,2,10 +MES2023Z,20231214,2342,4724.75,4724.75,4724.50,4724.75,5,66 +MES2023Z,20231214,2343,4725.00,4725.00,4725.00,4725.00,1,12 +MES2023Z,20231214,2344,4724.75,4724.75,4724.75,4724.75,1,2 +MES2023Z,20231214,2345,4724.75,4724.75,4724.50,4724.50,1,6 +MES2023Z,20231214,2346,4725.00,4725.25,4725.00,4725.25,2,42 +MES2023Z,20231214,2347,4725.25,4725.25,4725.00,4725.00,1,9 +MES2023Z,20231214,2348,4725.25,4725.25,4725.25,4725.25,1,1 +MES2023Z,20231214,2349,4725.75,4725.75,4725.75,4725.75,1,24 +MES2023Z,20231214,2350,4725.75,4725.75,4725.75,4725.75,0,2 +MES2023Z,20231214,2351,4726.00,4727.25,4726.00,4726.25,7,80 +MES2023Z,20231214,2352,4726.25,4726.75,4726.25,4726.50,3,31 +MES2023Z,20231214,2353,4726.25,4726.50,4726.25,4726.50,2,14 +MES2023Z,20231214,2355,4726.75,4726.75,4726.75,4726.75,1,23 +MES2023Z,20231214,2356,4726.75,4726.75,4726.75,4726.75,0,1 +MES2023Z,20231214,2357,4727.00,4727.00,4727.00,4727.00,1,1 +MES2023Z,20231214,2358,4727.50,4727.50,4727.50,4727.50,1,5 +MES2023Z,20231214,2359,4727.25,4727.25,4727.25,4727.25,1,3 +MES2023Z,20231215,0000,4726.50,4726.75,4726.00,4726.00,3,5 +MES2023Z,20231215,0001,4725.75,4725.75,4725.50,4725.50,4,5 +MES2023Z,20231215,0002,4725.25,4725.75,4725.25,4725.75,2,2 +MES2023Z,20231215,0003,4725.75,4725.75,4725.75,4725.75,0,2 +MES2023Z,20231215,0009,4726.25,4726.25,4726.25,4726.25,1,1 +MES2023Z,20231215,0010,4726.00,4726.25,4726.00,4726.25,2,5 +MES2023Z,20231215,0012,4725.75,4725.75,4725.75,4725.75,1,1 +MES2023Z,20231215,0018,4725.50,4725.50,4725.50,4725.50,1,1 +MES2023Z,20231215,0020,4725.50,4725.75,4725.25,4725.25,2,18 +MES2023Z,20231215,0021,4725.25,4725.25,4725.25,4725.25,0,2 +MES2023Z,20231215,0022,4725.50,4725.50,4725.50,4725.50,1,7 +MES2023Z,20231215,0023,4726.00,4726.00,4725.50,4725.50,2,6 +MES2023Z,20231215,0025,4725.25,4725.25,4725.00,4725.00,2,3 +MES2023Z,20231215,0026,4725.50,4725.50,4725.50,4725.50,1,1 +MES2023Z,20231215,0027,4725.50,4725.75,4725.50,4725.75,1,6 +MES2023Z,20231215,0029,4725.75,4725.75,4725.75,4725.75,0,3 +MES2023Z,20231215,0030,4725.25,4725.75,4725.25,4725.75,3,3 +MES2023Z,20231215,0031,4725.75,4725.75,4725.75,4725.75,0,1 +MES2023Z,20231215,0033,4726.00,4726.25,4726.00,4726.25,2,2 +MES2023Z,20231215,0034,4726.25,4726.25,4726.25,4726.25,0,2 +MES2023Z,20231215,0037,4726.00,4726.00,4726.00,4726.00,1,3 +MES2023Z,20231215,0038,4725.75,4725.75,4725.75,4725.75,1,2 +MES2023Z,20231215,0039,4726.00,4726.00,4725.75,4725.75,2,6 +MES2023Z,20231215,0042,4726.00,4726.25,4726.00,4726.25,2,2 +MES2023Z,20231215,0044,4726.25,4726.25,4726.25,4726.25,0,2 +MES2023Z,20231215,0045,4726.00,4726.00,4725.75,4725.75,2,2 +MES2023Z,20231215,0046,4725.75,4725.75,4725.25,4725.25,1,2 +MES2023Z,20231215,0048,4725.75,4725.75,4725.75,4725.75,1,3 +MES2023Z,20231215,0049,4726.00,4726.00,4726.00,4726.00,1,5 +MES2023Z,20231215,0050,4726.00,4726.00,4726.00,4726.00,0,9 +MES2023Z,20231215,0051,4725.75,4726.50,4725.75,4726.50,3,18 +MES2023Z,20231215,0052,4726.50,4726.50,4726.50,4726.50,0,4 +MES2023Z,20231215,0055,4726.25,4726.25,4726.25,4726.25,1,1 +MES2023Z,20231215,0056,4726.50,4726.50,4726.00,4726.00,2,15 +MES2023Z,20231215,0057,4726.00,4726.00,4726.00,4726.00,0,5 +MES2023Z,20231215,0058,4725.75,4725.75,4725.00,4725.25,4,24 +MES2023Z,20231215,0059,4725.75,4725.75,4725.75,4725.75,1,11 +MES2023Z,20231215,0102,4726.50,4726.50,4726.25,4726.25,2,3 +MES2023Z,20231215,0104,4726.75,4726.75,4726.25,4726.25,3,5 +MES2023Z,20231215,0105,4726.75,4726.75,4726.75,4726.75,1,2 +MES2023Z,20231215,0106,4727.00,4727.50,4727.00,4727.50,2,11 +MES2023Z,20231215,0107,4727.50,4727.50,4727.50,4727.50,0,1 +MES2023Z,20231215,0108,4727.50,4727.50,4727.50,4727.50,0,1 +MES2023Z,20231215,0109,4728.00,4728.00,4728.00,4728.00,1,5 +MES2023Z,20231215,0110,4728.25,4728.75,4728.25,4728.75,5,12 +MES2023Z,20231215,0111,4728.25,4728.25,4728.25,4728.25,1,1 +MES2023Z,20231215,0112,4728.25,4728.50,4728.25,4728.50,1,4 +MES2023Z,20231215,0114,4728.75,4729.00,4728.75,4729.00,2,7 +MES2023Z,20231215,0115,4728.75,4729.00,4728.75,4729.00,2,13 +MES2023Z,20231215,0116,4729.00,4729.25,4729.00,4729.25,1,2 +MES2023Z,20231215,0117,4729.25,4729.25,4729.25,4729.25,0,1 +MES2023Z,20231215,0118,4729.25,4729.50,4729.25,4729.50,1,5 +MES2023Z,20231215,0119,4729.50,4729.50,4729.00,4729.00,2,3 +MES2023Z,20231215,0120,4729.25,4729.25,4729.25,4729.25,1,5 +MES2023Z,20231215,0122,4729.25,4729.25,4729.25,4729.25,0,1 +MES2023Z,20231215,0123,4729.00,4729.00,4729.00,4729.00,1,8 +MES2023Z,20231215,0124,4728.50,4728.50,4728.50,4728.50,1,1 +MES2023Z,20231215,0125,4728.50,4729.50,4728.50,4729.25,5,9 +MES2023Z,20231215,0126,4729.50,4730.00,4729.50,4729.75,5,35 +MES2023Z,20231215,0127,4729.75,4729.75,4729.75,4729.75,0,15 +MES2023Z,20231215,0128,4730.00,4730.00,4729.50,4729.50,3,6 +MES2023Z,20231215,0129,4729.25,4730.00,4729.25,4730.00,2,12 +MES2023Z,20231215,0130,4729.75,4730.00,4729.75,4730.00,2,6 +MES2023Z,20231215,0131,4729.75,4729.75,4729.75,4729.75,1,4 +MES2023Z,20231215,0132,4730.00,4730.00,4730.00,4730.00,1,9 +MES2023Z,20231215,0133,4730.25,4730.75,4730.25,4730.50,4,15 +MES2023Z,20231215,0134,4730.50,4731.25,4730.50,4731.25,4,16 +MES2023Z,20231215,0135,4731.25,4731.25,4731.25,4731.25,0,4 +MES2023Z,20231215,0136,4731.25,4731.25,4731.00,4731.25,2,14 +MES2023Z,20231215,0137,4731.25,4731.25,4731.25,4731.25,0,5 +MES2023Z,20231215,0138,4731.50,4731.75,4731.50,4731.50,5,21 +MES2023Z,20231215,0139,4731.25,4731.25,4731.00,4731.00,2,7 +MES2023Z,20231215,0140,4731.50,4731.50,4731.50,4731.50,1,1 +MES2023Z,20231215,0141,4731.25,4731.50,4731.25,4731.25,3,3 +MES2023Z,20231215,0142,4731.25,4731.75,4731.00,4731.75,4,6 +MES2023Z,20231215,0143,4732.50,4732.50,4732.50,4732.50,1,1 +MES2023Z,20231215,0144,4732.25,4732.25,4732.25,4732.25,1,3 +MES2023Z,20231215,0145,4732.00,4732.25,4732.00,4732.00,3,8 +MES2023Z,20231215,0146,4731.75,4732.25,4731.75,4732.25,2,3 +MES2023Z,20231215,0147,4732.25,4732.25,4732.25,4732.25,0,2 +MES2023Z,20231215,0148,4732.25,4732.25,4732.25,4732.25,0,1 +MES2023Z,20231215,0149,4732.50,4732.50,4732.50,4732.50,1,1 +MES2023Z,20231215,0150,4732.50,4732.50,4732.25,4732.25,1,4 +MES2023Z,20231215,0151,4732.00,4732.25,4732.00,4732.25,2,3 +MES2023Z,20231215,0152,4732.25,4732.50,4732.25,4732.50,1,9 +MES2023Z,20231215,0153,4732.25,4732.25,4732.25,4732.25,1,4 +MES2023Z,20231215,0154,4732.75,4732.75,4732.25,4732.25,3,8 +MES2023Z,20231215,0155,4732.50,4732.75,4732.50,4732.75,2,24 +MES2023Z,20231215,0157,4732.75,4732.75,4732.75,4732.75,0,3 +MES2023Z,20231215,0158,4732.50,4732.50,4732.50,4732.50,1,3 +MES2023Z,20231215,0159,4732.75,4732.75,4732.25,4732.25,2,4 +MES2023Z,20231215,0200,4732.25,4732.50,4732.25,4732.25,4,26 +MES2023Z,20231215,0201,4732.25,4732.25,4731.75,4732.00,2,7 +MES2023Z,20231215,0202,4732.25,4732.25,4732.25,4732.25,1,1 +MES2023Z,20231215,0203,4732.50,4732.50,4732.00,4732.00,3,10 +MES2023Z,20231215,0204,4732.25,4732.75,4732.25,4732.75,5,33 +MES2023Z,20231215,0205,4732.75,4733.00,4732.50,4732.50,5,15 +MES2023Z,20231215,0206,4733.00,4733.00,4732.50,4732.75,6,19 +MES2023Z,20231215,0207,4732.50,4732.50,4732.25,4732.25,2,19 +MES2023Z,20231215,0208,4731.75,4732.00,4731.75,4732.00,2,5 +MES2023Z,20231215,0209,4732.50,4732.50,4732.00,4732.25,4,15 +MES2023Z,20231215,0210,4732.25,4732.50,4732.00,4732.00,3,6 +MES2023Z,20231215,0211,4732.25,4732.50,4732.00,4732.50,4,24 +MES2023Z,20231215,0212,4732.00,4732.00,4732.00,4732.00,1,10 +MES2023Z,20231215,0213,4732.00,4732.25,4731.75,4732.25,5,9 +MES2023Z,20231215,0214,4732.00,4732.00,4731.25,4731.25,3,5 +MES2023Z,20231215,0215,4731.50,4731.50,4730.75,4731.25,5,12 +MES2023Z,20231215,0216,4731.75,4731.75,4730.75,4730.75,5,8 +MES2023Z,20231215,0217,4730.75,4731.00,4730.75,4730.75,2,6 +MES2023Z,20231215,0218,4731.25,4731.75,4731.25,4731.75,3,5 +MES2023Z,20231215,0219,4732.00,4732.00,4731.25,4731.25,3,4 +MES2023Z,20231215,0220,4731.50,4731.50,4731.25,4731.25,2,3 +MES2023Z,20231215,0221,4731.00,4731.00,4730.25,4730.50,4,9 +MES2023Z,20231215,0222,4730.25,4730.25,4730.25,4730.25,1,1 +MES2023Z,20231215,0223,4729.75,4730.00,4729.75,4730.00,2,5 +MES2023Z,20231215,0224,4730.00,4730.25,4729.75,4730.25,4,15 +MES2023Z,20231215,0225,4730.25,4730.25,4730.00,4730.00,1,5 +MES2023Z,20231215,0226,4731.00,4731.00,4730.75,4730.75,2,8 +MES2023Z,20231215,0227,4731.25,4731.25,4731.00,4731.25,3,4 +MES2023Z,20231215,0228,4731.50,4731.75,4731.50,4731.75,2,2 +MES2023Z,20231215,0229,4730.50,4730.50,4730.50,4730.50,1,1 +MES2023Z,20231215,0230,4731.00,4731.75,4731.00,4731.50,4,11 +MES2023Z,20231215,0231,4731.50,4731.50,4730.50,4730.50,4,6 +MES2023Z,20231215,0232,4730.50,4731.50,4730.50,4731.50,2,4 +MES2023Z,20231215,0233,4731.75,4731.75,4731.75,4731.75,1,4 +MES2023Z,20231215,0234,4731.75,4731.75,4731.75,4731.75,0,5 +MES2023Z,20231215,0235,4731.00,4731.00,4731.00,4731.00,1,1 +MES2023Z,20231215,0236,4730.25,4730.75,4730.00,4730.75,3,15 +MES2023Z,20231215,0237,4730.50,4730.50,4729.75,4729.75,3,4 +MES2023Z,20231215,0238,4729.75,4730.25,4729.75,4730.25,1,2 +MES2023Z,20231215,0239,4729.75,4730.00,4729.75,4730.00,2,4 +MES2023Z,20231215,0240,4730.50,4731.00,4730.50,4731.00,3,3 +MES2023Z,20231215,0241,4731.00,4731.25,4731.00,4731.25,1,12 +MES2023Z,20231215,0242,4731.75,4731.75,4731.75,4731.75,1,1 +MES2023Z,20231215,0243,4731.75,4732.00,4731.75,4731.75,2,10 +MES2023Z,20231215,0244,4731.25,4731.25,4731.25,4731.25,1,6 +MES2023Z,20231215,0245,4731.00,4731.00,4730.75,4731.00,3,4 +MES2023Z,20231215,0246,4730.50,4730.75,4729.75,4729.75,5,19 +MES2023Z,20231215,0247,4730.00,4731.00,4730.00,4731.00,10,51 +MES2023Z,20231215,0248,4731.00,4731.00,4731.00,4731.00,0,9 +MES2023Z,20231215,0249,4730.50,4730.50,4730.50,4730.50,1,1 +MES2023Z,20231215,0250,4730.25,4730.75,4730.25,4730.75,2,2 +MES2023Z,20231215,0251,4731.00,4731.25,4731.00,4731.00,3,8 +MES2023Z,20231215,0252,4730.75,4731.25,4730.75,4731.25,2,4 +MES2023Z,20231215,0253,4731.50,4732.00,4731.50,4731.75,4,27 +MES2023Z,20231215,0254,4732.25,4732.50,4732.25,4732.50,2,28 +MES2023Z,20231215,0255,4732.50,4732.50,4732.50,4732.50,0,2 +MES2023Z,20231215,0256,4732.75,4733.00,4732.75,4733.00,2,11 +MES2023Z,20231215,0257,4732.75,4732.75,4732.75,4732.75,1,11 +MES2023Z,20231215,0258,4733.00,4733.50,4732.75,4733.50,11,86 +MES2023Z,20231215,0259,4733.25,4733.75,4733.00,4733.00,36,257 +MES2023Z,20231215,0300,4732.75,4732.75,4732.25,4732.50,14,107 +MES2023Z,20231215,0301,4732.25,4732.75,4732.25,4732.75,6,35 +MES2023Z,20231215,0302,4732.50,4732.50,4732.00,4732.50,3,5 +MES2023Z,20231215,0303,4731.50,4731.75,4731.50,4731.75,2,21 +MES2023Z,20231215,0304,4731.50,4731.50,4731.00,4731.00,3,26 +MES2023Z,20231215,0305,4731.00,4732.00,4730.25,4732.00,7,17 +MES2023Z,20231215,0306,4731.75,4732.50,4731.75,4732.50,6,54 +MES2023Z,20231215,0307,4732.75,4733.00,4732.25,4732.50,6,73 +MES2023Z,20231215,0308,4732.75,4733.00,4732.25,4732.75,11,65 +MES2023Z,20231215,0309,4732.75,4733.00,4732.25,4733.00,58,565 +MES2023Z,20231215,0310,4733.00,4733.00,4732.50,4733.00,6,83 +MES2023Z,20231215,0311,4733.25,4733.25,4733.00,4733.00,2,4 +MES2023Z,20231215,0312,4733.00,4733.25,4732.50,4732.75,9,117 +MES2023Z,20231215,0313,4732.50,4732.75,4732.00,4732.50,7,80 +MES2023Z,20231215,0314,4732.75,4733.25,4732.50,4733.25,5,11 +MES2023Z,20231215,0315,4733.00,4733.25,4733.00,4733.00,3,25 +MES2023Z,20231215,0316,4733.25,4733.50,4732.75,4732.75,17,151 +MES2023Z,20231215,0317,4732.75,4733.00,4732.75,4733.00,1,23 +MES2023Z,20231215,0318,4733.25,4733.25,4733.00,4733.00,2,19 +MES2023Z,20231215,0319,4732.75,4733.50,4732.75,4733.50,4,12 +MES2023Z,20231215,0320,4733.50,4733.75,4733.00,4733.50,8,88 +MES2023Z,20231215,0321,4733.25,4733.75,4733.25,4733.50,3,15 +MES2023Z,20231215,0322,4733.50,4733.75,4733.25,4733.25,4,33 +MES2023Z,20231215,0323,4733.75,4733.75,4733.75,4733.75,1,18 +MES2023Z,20231215,0324,4734.00,4734.25,4734.00,4734.00,3,6 +MES2023Z,20231215,0325,4734.00,4734.00,4734.00,4734.00,0,5 +MES2023Z,20231215,0326,4734.25,4734.25,4733.75,4733.75,3,18 +MES2023Z,20231215,0327,4733.75,4733.75,4733.50,4733.50,1,11 +MES2023Z,20231215,0328,4733.50,4733.50,4733.50,4733.50,0,3 +MES2023Z,20231215,0329,4733.75,4734.00,4733.75,4734.00,2,2 +MES2023Z,20231215,0330,4734.00,4734.00,4733.50,4733.50,2,6 +MES2023Z,20231215,0331,4733.50,4733.75,4733.50,4733.75,1,10 +MES2023Z,20231215,0332,4733.50,4733.50,4733.00,4733.00,3,21 +MES2023Z,20231215,0333,4733.00,4733.25,4733.00,4733.25,1,29 +MES2023Z,20231215,0334,4733.75,4734.00,4733.75,4734.00,2,3 +MES2023Z,20231215,0335,4733.50,4733.50,4733.50,4733.50,1,1 +MES2023Z,20231215,0336,4734.00,4734.00,4733.75,4733.75,2,13 +MES2023Z,20231215,0337,4734.00,4734.00,4734.00,4734.00,1,1 +MES2023Z,20231215,0339,4734.50,4734.50,4734.00,4734.25,4,13 +MES2023Z,20231215,0340,4733.75,4733.75,4733.50,4733.50,2,7 +MES2023Z,20231215,0341,4734.00,4734.00,4733.00,4733.00,3,8 +MES2023Z,20231215,0342,4733.25,4733.50,4733.25,4733.50,2,4 +MES2023Z,20231215,0343,4734.00,4734.00,4734.00,4734.00,1,1 +MES2023Z,20231215,0344,4734.25,4734.50,4734.25,4734.25,3,19 +MES2023Z,20231215,0345,4734.25,4734.25,4734.25,4734.25,0,1 +MES2023Z,20231215,0346,4734.50,4734.50,4734.50,4734.50,1,1 +MES2023Z,20231215,0347,4734.25,4734.25,4734.25,4734.25,1,2 +MES2023Z,20231215,0349,4734.50,4734.75,4734.50,4734.50,3,11 +MES2023Z,20231215,0350,4734.25,4734.25,4734.25,4734.25,1,2 +MES2023Z,20231215,0352,4734.75,4735.00,4734.75,4734.75,3,31 +MES2023Z,20231215,0353,4734.75,4734.75,4734.75,4734.75,0,9 +MES2023Z,20231215,0354,4734.50,4734.50,4734.50,4734.50,1,14 +MES2023Z,20231215,0355,4734.75,4735.00,4734.75,4734.75,3,8 +MES2023Z,20231215,0356,4734.50,4735.00,4734.50,4734.75,4,26 +MES2023Z,20231215,0357,4734.75,4735.00,4734.75,4735.00,1,5 +MES2023Z,20231215,0359,4734.50,4734.50,4734.50,4734.50,1,1 +MES2023Z,20231215,0401,4735.00,4735.25,4735.00,4735.25,4,22 +MES2023Z,20231215,0402,4735.50,4735.50,4735.25,4735.25,2,6 +MES2023Z,20231215,0403,4735.00,4735.00,4735.00,4735.00,1,4 +MES2023Z,20231215,0404,4735.25,4735.25,4735.25,4735.25,1,2 +MES2023Z,20231215,0405,4735.25,4735.25,4735.25,4735.25,0,13 +MES2023Z,20231215,0406,4734.75,4734.75,4734.75,4734.75,1,1 +MES2023Z,20231215,0407,4735.25,4735.50,4735.25,4735.25,3,25 +MES2023Z,20231215,0408,4735.50,4735.50,4735.00,4735.00,4,7 +MES2023Z,20231215,0409,4735.25,4735.25,4735.25,4735.25,1,5 +MES2023Z,20231215,0410,4735.50,4735.50,4735.25,4735.25,2,4 +MES2023Z,20231215,0411,4735.25,4735.50,4735.25,4735.25,4,14 +MES2023Z,20231215,0412,4735.25,4735.50,4735.25,4735.25,4,12 +MES2023Z,20231215,0413,4735.50,4735.75,4735.50,4735.75,2,7 +MES2023Z,20231215,0414,4735.75,4736.00,4735.75,4736.00,1,57 +MES2023Z,20231215,0415,4735.75,4735.75,4735.50,4735.75,3,12 +MES2023Z,20231215,0416,4735.75,4736.00,4735.75,4736.00,1,2 +MES2023Z,20231215,0417,4736.00,4736.50,4736.00,4736.50,4,19 +MES2023Z,20231215,0418,4736.50,4736.50,4736.25,4736.25,1,3 +MES2023Z,20231215,0419,4736.50,4736.50,4736.50,4736.50,1,2 +MES2023Z,20231215,0420,4736.25,4736.25,4735.75,4735.75,3,4 +MES2023Z,20231215,0421,4735.75,4735.75,4735.25,4735.25,2,6 +MES2023Z,20231215,0422,4735.75,4736.25,4735.75,4736.25,2,2 +MES2023Z,20231215,0423,4735.75,4735.75,4735.75,4735.75,1,2 +MES2023Z,20231215,0424,4735.50,4735.50,4735.25,4735.25,2,5 +MES2023Z,20231215,0425,4735.00,4735.75,4735.00,4735.75,5,8 +MES2023Z,20231215,0426,4735.75,4735.75,4735.00,4735.25,3,6 +MES2023Z,20231215,0427,4735.25,4735.25,4735.25,4735.25,0,1 +MES2023Z,20231215,0428,4735.25,4735.75,4735.25,4735.75,1,14 +MES2023Z,20231215,0429,4735.75,4735.75,4735.75,4735.75,0,3 +MES2023Z,20231215,0430,4735.50,4735.50,4735.00,4735.00,2,4 +MES2023Z,20231215,0432,4734.75,4734.75,4734.75,4734.75,1,1 +MES2023Z,20231215,0433,4734.75,4735.00,4734.50,4734.50,3,29 +MES2023Z,20231215,0434,4734.50,4734.75,4734.00,4734.00,3,10 +MES2023Z,20231215,0435,4734.25,4734.50,4734.25,4734.25,3,15 +MES2023Z,20231215,0436,4734.00,4734.25,4734.00,4734.25,2,3 +MES2023Z,20231215,0437,4734.25,4734.25,4734.00,4734.25,2,3 +MES2023Z,20231215,0438,4734.25,4734.25,4734.00,4734.00,3,11 +MES2023Z,20231215,0439,4733.75,4733.75,4733.25,4733.50,3,6 +MES2023Z,20231215,0440,4733.00,4733.00,4732.50,4733.00,5,12 +MES2023Z,20231215,0441,4732.75,4732.75,4732.25,4732.25,3,11 +MES2023Z,20231215,0442,4732.50,4732.50,4732.25,4732.25,2,3 +MES2023Z,20231215,0443,4732.25,4732.25,4732.25,4732.25,0,2 +MES2023Z,20231215,0444,4732.25,4732.50,4732.25,4732.50,1,5 +MES2023Z,20231215,0445,4732.00,4732.25,4732.00,4732.00,3,3 +MES2023Z,20231215,0446,4732.00,4732.00,4732.00,4732.00,0,6 +MES2023Z,20231215,0447,4732.75,4732.75,4732.75,4732.75,1,7 +MES2023Z,20231215,0448,4732.50,4732.75,4732.50,4732.50,5,10 +MES2023Z,20231215,0449,4733.25,4733.25,4733.00,4733.00,2,4 +MES2023Z,20231215,0450,4733.75,4734.25,4733.50,4734.25,6,30 +MES2023Z,20231215,0451,4733.75,4734.00,4733.75,4734.00,2,2 +MES2023Z,20231215,0452,4733.50,4733.50,4733.00,4733.00,3,6 +MES2023Z,20231215,0453,4733.25,4733.25,4732.75,4732.75,2,6 +MES2023Z,20231215,0454,4733.00,4733.25,4733.00,4733.25,2,15 +MES2023Z,20231215,0455,4733.25,4733.25,4733.25,4733.25,0,3 +MES2023Z,20231215,0456,4733.25,4733.25,4733.25,4733.25,0,1 +MES2023Z,20231215,0457,4733.50,4734.25,4733.50,4734.25,2,3 +MES2023Z,20231215,0458,4734.00,4734.00,4733.50,4733.50,2,2 +MES2023Z,20231215,0459,4733.25,4733.25,4733.25,4733.25,1,1 +MES2023Z,20231215,0500,4733.25,4733.25,4733.00,4733.00,1,11 +MES2023Z,20231215,0501,4733.00,4733.25,4733.00,4733.25,1,3 +MES2023Z,20231215,0502,4732.75,4732.75,4732.50,4732.75,3,4 +MES2023Z,20231215,0503,4732.50,4732.50,4732.50,4732.50,1,16 +MES2023Z,20231215,0504,4732.75,4732.75,4732.25,4732.50,4,20 +MES2023Z,20231215,0505,4732.75,4732.75,4732.75,4732.75,1,1 +MES2023Z,20231215,0507,4733.25,4733.50,4733.25,4733.25,3,13 +MES2023Z,20231215,0508,4733.25,4733.50,4733.00,4733.50,2,15 +MES2023Z,20231215,0509,4733.25,4733.25,4733.25,4733.25,1,1 +MES2023Z,20231215,0510,4733.25,4733.50,4733.25,4733.50,1,5 +MES2023Z,20231215,0511,4733.75,4733.75,4733.75,4733.75,1,2 +MES2023Z,20231215,0512,4733.75,4734.25,4733.75,4734.25,2,10 +MES2023Z,20231215,0513,4734.25,4734.25,4734.00,4734.00,1,2 +MES2023Z,20231215,0514,4734.00,4734.25,4734.00,4734.25,1,6 +MES2023Z,20231215,0515,4734.25,4734.25,4734.00,4734.00,1,7 +MES2023Z,20231215,0516,4734.00,4734.00,4733.75,4733.75,1,7 +MES2023Z,20231215,0517,4733.75,4734.25,4733.75,4734.25,1,15 +MES2023Z,20231215,0518,4734.25,4734.75,4734.25,4734.75,2,11 +MES2023Z,20231215,0519,4734.50,4734.50,4734.50,4734.50,1,5 +MES2023Z,20231215,0520,4734.75,4734.75,4734.50,4734.50,2,6 +MES2023Z,20231215,0522,4734.25,4734.25,4734.00,4734.00,2,7 +MES2023Z,20231215,0523,4733.75,4733.75,4733.50,4733.50,2,9 +MES2023Z,20231215,0524,4733.75,4733.75,4733.75,4733.75,1,5 +MES2023Z,20231215,0526,4734.00,4734.00,4734.00,4734.00,1,2 +MES2023Z,20231215,0527,4733.75,4734.00,4733.50,4734.00,4,5 +MES2023Z,20231215,0528,4734.00,4734.00,4734.00,4734.00,0,4 +MES2023Z,20231215,0529,4734.25,4734.25,4734.25,4734.25,1,2 +MES2023Z,20231215,0530,4734.25,4734.25,4734.25,4734.25,0,1 +MES2023Z,20231215,0531,4734.50,4734.50,4734.50,4734.50,1,2 +MES2023Z,20231215,0532,4734.50,4734.75,4734.50,4734.75,1,4 +MES2023Z,20231215,0533,4734.25,4734.25,4734.25,4734.25,1,1 +MES2023Z,20231215,0534,4734.25,4734.25,4734.25,4734.25,0,1 +MES2023Z,20231215,0535,4734.25,4734.25,4734.25,4734.25,0,1 +MES2023Z,20231215,0536,4734.00,4734.00,4733.75,4733.75,2,2 +MES2023Z,20231215,0537,4734.00,4734.00,4734.00,4734.00,1,2 +MES2023Z,20231215,0538,4733.75,4734.00,4733.75,4734.00,2,2 +MES2023Z,20231215,0539,4734.25,4734.25,4734.25,4734.25,1,4 +MES2023Z,20231215,0540,4734.50,4735.00,4734.50,4734.75,3,8 +MES2023Z,20231215,0541,4734.50,4734.50,4734.50,4734.50,1,3 +MES2023Z,20231215,0542,4734.25,4734.25,4734.25,4734.25,1,1 +MES2023Z,20231215,0543,4733.75,4734.00,4733.75,4734.00,2,3 +MES2023Z,20231215,0544,4734.00,4734.25,4734.00,4734.25,1,2 +MES2023Z,20231215,0545,4734.00,4734.50,4734.00,4734.50,3,8 +MES2023Z,20231215,0547,4735.00,4735.00,4735.00,4735.00,1,1 +MES2023Z,20231215,0548,4735.50,4736.00,4735.50,4736.00,5,31 +MES2023Z,20231215,0549,4735.50,4735.75,4735.50,4735.50,5,16 +MES2023Z,20231215,0550,4735.50,4735.50,4735.00,4735.50,3,13 +MES2023Z,20231215,0551,4735.50,4735.75,4735.50,4735.50,2,4 +MES2023Z,20231215,0552,4735.75,4735.75,4735.75,4735.75,1,3 +MES2023Z,20231215,0553,4735.50,4735.50,4735.50,4735.50,1,2 +MES2023Z,20231215,0554,4735.75,4735.75,4735.50,4735.50,2,2 +MES2023Z,20231215,0555,4735.25,4735.25,4735.00,4735.25,3,4 +MES2023Z,20231215,0556,4735.25,4735.25,4735.25,4735.25,0,1 +MES2023Z,20231215,0557,4735.00,4735.00,4734.25,4734.25,2,5 +MES2023Z,20231215,0558,4734.25,4734.25,4734.25,4734.25,0,1 +MES2023Z,20231215,0559,4734.50,4734.50,4734.00,4734.00,5,14 +MES2023Z,20231215,0600,4733.75,4733.75,4733.75,4733.75,1,2 +MES2023Z,20231215,0601,4733.75,4734.25,4733.75,4734.25,2,7 +MES2023Z,20231215,0602,4734.00,4734.50,4733.75,4734.50,4,8 +MES2023Z,20231215,0603,4734.25,4734.25,4734.25,4734.25,1,2 +MES2023Z,20231215,0604,4733.50,4733.50,4733.25,4733.50,5,18 +MES2023Z,20231215,0605,4733.25,4733.25,4733.00,4733.25,3,24 +MES2023Z,20231215,0606,4733.50,4733.75,4733.50,4733.75,4,11 +MES2023Z,20231215,0607,4734.00,4734.25,4733.75,4734.25,4,11 +MES2023Z,20231215,0608,4734.00,4734.25,4734.00,4734.00,5,7 +MES2023Z,20231215,0609,4734.00,4734.00,4733.25,4733.50,4,12 +MES2023Z,20231215,0610,4733.25,4733.25,4733.00,4733.25,3,8 +MES2023Z,20231215,0611,4733.25,4733.75,4733.25,4733.25,5,8 +MES2023Z,20231215,0612,4733.25,4733.25,4733.00,4733.25,2,4 +MES2023Z,20231215,0613,4733.50,4733.75,4733.25,4733.25,3,3 +MES2023Z,20231215,0614,4733.00,4733.00,4733.00,4733.00,1,4 +MES2023Z,20231215,0615,4733.00,4733.00,4733.00,4733.00,0,2 +MES2023Z,20231215,0616,4733.25,4733.25,4733.25,4733.25,1,3 +MES2023Z,20231215,0617,4733.00,4733.00,4732.50,4733.00,4,19 +MES2023Z,20231215,0618,4733.00,4733.25,4733.00,4733.25,1,24 +MES2023Z,20231215,0619,4733.50,4733.75,4733.50,4733.75,2,6 +MES2023Z,20231215,0620,4733.75,4733.75,4733.50,4733.50,1,3 +MES2023Z,20231215,0621,4733.50,4733.50,4733.25,4733.50,2,13 +MES2023Z,20231215,0623,4733.25,4733.75,4733.00,4733.75,5,14 +MES2023Z,20231215,0624,4733.75,4734.00,4733.75,4734.00,1,9 +MES2023Z,20231215,0625,4734.00,4734.25,4734.00,4734.25,1,13 +MES2023Z,20231215,0626,4734.25,4734.50,4734.00,4734.50,2,6 +MES2023Z,20231215,0627,4734.25,4734.25,4734.00,4734.00,2,2 +MES2023Z,20231215,0628,4734.50,4734.50,4734.50,4734.50,1,1 +MES2023Z,20231215,0629,4734.00,4734.00,4734.00,4734.00,1,11 +MES2023Z,20231215,0630,4734.00,4734.00,4734.00,4734.00,0,3 +MES2023Z,20231215,0631,4733.75,4733.75,4733.50,4733.75,3,6 +MES2023Z,20231215,0632,4733.50,4733.50,4733.25,4733.25,2,16 +MES2023Z,20231215,0633,4733.25,4733.25,4733.25,4733.25,0,1 +MES2023Z,20231215,0634,4733.25,4733.75,4733.25,4733.75,2,9 +MES2023Z,20231215,0635,4733.75,4734.00,4733.75,4734.00,1,4 +MES2023Z,20231215,0636,4734.00,4734.25,4734.00,4734.25,1,6 +MES2023Z,20231215,0637,4734.50,4734.50,4734.25,4734.25,2,14 +MES2023Z,20231215,0638,4734.25,4734.25,4734.00,4734.00,1,9 +MES2023Z,20231215,0639,4734.00,4734.00,4733.75,4733.75,1,5 +MES2023Z,20231215,0640,4734.00,4734.00,4733.50,4733.50,3,8 +MES2023Z,20231215,0641,4733.25,4733.25,4733.25,4733.25,1,3 +MES2023Z,20231215,0642,4733.00,4733.00,4732.75,4732.75,2,8 +MES2023Z,20231215,0643,4732.75,4732.75,4732.25,4732.25,2,16 +MES2023Z,20231215,0644,4732.00,4732.00,4731.75,4731.75,2,34 +MES2023Z,20231215,0645,4731.50,4732.00,4731.50,4732.00,5,26 +MES2023Z,20231215,0646,4731.75,4731.75,4731.50,4731.50,4,12 +MES2023Z,20231215,0647,4731.25,4731.75,4731.00,4731.75,5,22 +MES2023Z,20231215,0648,4731.75,4732.00,4731.75,4732.00,1,4 +MES2023Z,20231215,0649,4731.25,4731.25,4730.75,4731.00,4,21 +MES2023Z,20231215,0650,4731.00,4731.00,4730.25,4730.50,5,14 +MES2023Z,20231215,0651,4730.50,4730.75,4730.50,4730.75,5,17 +MES2023Z,20231215,0652,4730.75,4730.75,4730.25,4730.25,4,16 +MES2023Z,20231215,0653,4730.25,4730.50,4730.25,4730.25,8,154 +MES2023Z,20231215,0654,4730.75,4730.75,4730.50,4730.50,6,48 +MES2023Z,20231215,0655,4730.50,4730.50,4730.00,4730.00,4,25 +MES2023Z,20231215,0656,4729.75,4729.75,4729.25,4729.25,5,35 +MES2023Z,20231215,0657,4729.00,4729.75,4728.75,4729.50,9,53 +MES2023Z,20231215,0658,4729.25,4729.25,4728.75,4729.25,3,17 +MES2023Z,20231215,0659,4729.50,4730.00,4729.50,4730.00,3,23 +MES2023Z,20231215,0700,4730.00,4730.50,4729.75,4730.50,4,16 +MES2023Z,20231215,0701,4730.25,4731.00,4730.00,4730.00,9,17 +MES2023Z,20231215,0702,4730.00,4730.25,4730.00,4730.00,2,21 +MES2023Z,20231215,0703,4730.25,4730.25,4729.00,4729.00,9,42 +MES2023Z,20231215,0704,4729.00,4729.75,4729.00,4729.25,4,41 +MES2023Z,20231215,0705,4729.00,4730.00,4729.00,4729.75,6,54 +MES2023Z,20231215,0706,4729.50,4729.50,4729.50,4729.50,1,13 +MES2023Z,20231215,0707,4729.25,4729.50,4729.25,4729.50,4,19 +MES2023Z,20231215,0708,4729.25,4729.50,4728.75,4728.75,4,7 +MES2023Z,20231215,0709,4729.75,4730.00,4729.75,4729.75,5,16 +MES2023Z,20231215,0710,4729.50,4730.50,4729.50,4730.50,5,8 +MES2023Z,20231215,0711,4730.50,4731.00,4730.25,4730.50,4,13 +MES2023Z,20231215,0712,4730.50,4730.50,4730.00,4730.00,1,21 +MES2023Z,20231215,0713,4730.25,4730.25,4730.25,4730.25,1,3 +MES2023Z,20231215,0714,4730.25,4730.25,4730.00,4730.00,1,3 +MES2023Z,20231215,0715,4730.50,4730.75,4730.50,4730.50,3,6 +MES2023Z,20231215,0716,4730.50,4731.00,4729.75,4730.00,10,103 +MES2023Z,20231215,0717,4730.00,4730.25,4729.50,4729.50,5,21 +MES2023Z,20231215,0718,4729.25,4729.25,4728.75,4729.00,6,20 +MES2023Z,20231215,0719,4729.00,4729.00,4728.75,4728.75,1,11 +MES2023Z,20231215,0720,4729.00,4729.00,4728.50,4729.00,4,34 +MES2023Z,20231215,0721,4729.25,4729.50,4728.75,4728.75,5,9 +MES2023Z,20231215,0722,4728.50,4728.50,4727.75,4728.25,8,27 +MES2023Z,20231215,0723,4728.25,4729.25,4728.25,4729.25,6,24 +MES2023Z,20231215,0724,4729.25,4729.75,4729.25,4729.75,2,8 +MES2023Z,20231215,0725,4729.50,4729.50,4729.00,4729.50,3,7 +MES2023Z,20231215,0726,4729.50,4730.25,4729.50,4730.25,3,10 +MES2023Z,20231215,0727,4730.50,4731.00,4730.50,4730.50,7,24 +MES2023Z,20231215,0728,4731.00,4731.50,4730.75,4730.75,5,12 +MES2023Z,20231215,0729,4730.50,4731.75,4730.25,4731.25,16,31 +MES2023Z,20231215,0730,4731.75,4740.50,4729.75,4732.25,56,122 +MES2023Z,20231215,0731,4732.50,4733.00,4732.00,4732.25,10,22 +MES2023Z,20231215,0732,4731.75,4731.75,4728.00,4728.00,14,52 +MES2023Z,20231215,0733,4728.75,4729.75,4727.25,4727.25,21,76 +MES2023Z,20231215,0734,4727.50,4727.50,4725.25,4726.25,32,83 +MES2023Z,20231215,0735,4726.50,4726.75,4725.75,4726.50,9,27 +MES2023Z,20231215,0736,4726.00,4726.00,4723.00,4723.25,20,47 +MES2023Z,20231215,0737,4723.00,4725.00,4723.00,4724.75,18,42 +MES2023Z,20231215,0738,4725.00,4725.25,4722.25,4722.50,11,19 +MES2023Z,20231215,0739,4722.00,4722.00,4718.25,4718.75,66,236 +MES2023Z,20231215,0740,4718.50,4720.50,4717.25,4720.00,42,107 +MES2023Z,20231215,0741,4719.25,4719.25,4716.50,4716.50,21,59 +MES2023Z,20231215,0742,4716.50,4718.00,4714.25,4715.50,29,125 +MES2023Z,20231215,0743,4715.50,4717.50,4713.50,4717.25,36,83 +MES2023Z,20231215,0744,4717.00,4722.25,4717.00,4719.00,46,200 +MES2023Z,20231215,0745,4719.25,4719.25,4717.50,4719.00,11,32 +MES2023Z,20231215,0746,4718.75,4720.00,4718.00,4719.50,13,29 +MES2023Z,20231215,0747,4719.00,4719.25,4717.50,4717.50,17,35 +MES2023Z,20231215,0748,4717.25,4719.00,4716.75,4717.00,18,60 +MES2023Z,20231215,0749,4717.75,4719.50,4717.75,4718.50,22,81 +MES2023Z,20231215,0750,4718.75,4719.50,4718.00,4719.50,14,32 +MES2023Z,20231215,0751,4719.75,4720.25,4719.25,4719.25,21,43 +MES2023Z,20231215,0752,4719.50,4720.25,4718.50,4720.00,14,35 +MES2023Z,20231215,0753,4720.25,4721.50,4720.00,4720.75,12,62 +MES2023Z,20231215,0754,4720.75,4722.75,4720.75,4721.75,22,82 +MES2023Z,20231215,0755,4721.75,4722.75,4721.50,4721.50,13,27 +MES2023Z,20231215,0756,4721.50,4721.75,4719.75,4720.25,16,64 +MES2023Z,20231215,0757,4720.00,4722.25,4720.00,4721.75,14,79 +MES2023Z,20231215,0758,4722.25,4722.75,4721.50,4722.00,15,50 +MES2023Z,20231215,0759,4721.75,4722.00,4720.75,4721.75,16,56 +MES2023Z,20231215,0800,4721.75,4722.00,4719.75,4720.00,19,80 +MES2023Z,20231215,0801,4720.50,4721.50,4720.25,4721.50,6,14 +MES2023Z,20231215,0802,4721.00,4722.25,4721.00,4721.75,6,18 +MES2023Z,20231215,0803,4722.00,4723.25,4722.00,4723.00,14,27 +MES2023Z,20231215,0804,4723.25,4724.25,4722.00,4722.00,38,183 +MES2023Z,20231215,0805,4722.25,4722.50,4720.75,4721.00,13,53 +MES2023Z,20231215,0806,4722.00,4723.00,4722.00,4723.00,12,41 +MES2023Z,20231215,0807,4723.00,4724.25,4723.00,4724.25,19,70 +MES2023Z,20231215,0808,4724.00,4724.25,4723.50,4724.25,11,42 +MES2023Z,20231215,0809,4724.00,4725.00,4724.00,4724.75,10,37 +MES2023Z,20231215,0810,4724.50,4724.75,4724.50,4724.75,4,19 +MES2023Z,20231215,0811,4724.75,4725.25,4724.00,4725.00,12,40 +MES2023Z,20231215,0812,4725.25,4725.50,4724.75,4724.75,7,10 +MES2023Z,20231215,0813,4724.75,4725.75,4724.75,4725.25,9,31 +MES2023Z,20231215,0814,4726.00,4726.50,4725.75,4726.00,14,45 +MES2023Z,20231215,0815,4726.00,4727.50,4725.00,4727.00,19,78 +MES2023Z,20231215,0816,4727.25,4727.75,4726.75,4727.50,20,48 +MES2023Z,20231215,0817,4727.00,4727.25,4726.25,4727.25,12,71 +MES2023Z,20231215,0818,4727.50,4728.00,4727.50,4727.50,5,38 +MES2023Z,20231215,0819,4727.50,4727.75,4726.50,4726.50,21,78 +MES2023Z,20231215,0820,4726.50,4726.50,4723.25,4725.50,23,79 +MES2023Z,20231215,0821,4725.75,4727.50,4725.75,4727.50,13,34 +MES2023Z,20231215,0822,4727.25,4727.50,4726.25,4726.50,16,41 +MES2023Z,20231215,0823,4726.50,4726.50,4725.00,4725.00,8,22 +MES2023Z,20231215,0824,4725.00,4725.75,4724.75,4725.00,9,27 +MES2023Z,20231215,0825,4724.50,4724.50,4720.00,4720.00,50,141 +MES2023Z,20231215,0826,4720.25,4720.25,4717.50,4718.25,69,125 +MES2023Z,20231215,0827,4717.75,4720.25,4716.75,4717.25,49,110 +MES2023Z,20231215,0828,4717.75,4717.75,4702.75,4714.00,116,348 +MES2023Z,20231215,0829,4714.00,4718.75,4711.25,4716.50,63,119 +MES2023Z,20231215,0847,4694.25,4694.25,4694.25,4694.25,1,0 diff --git a/src/Machine-Learning/LSTM-python/src/data/SQ_5min_3years.csv b/src/MidasAgent/data/SQ_5min_3years.csv similarity index 100% rename from src/Machine-Learning/LSTM-python/src/data/SQ_5min_3years.csv rename to src/MidasAgent/data/SQ_5min_3years.csv diff --git a/src/MidasAgent/data/converter.py b/src/MidasAgent/data/converter.py new file mode 100644 index 0000000..2bdefcb --- /dev/null +++ b/src/MidasAgent/data/converter.py @@ -0,0 +1,28 @@ +import csv + +# Input and output file names +input_file = "MES2023Z.txt" # Change this to your actual file name +output_file = "MES2023Z.csv" + +# Open the TXT file and write to a CSV file +with open(input_file, "r") as txt_file, open(output_file, "w", newline="") as csv_file: + writer = csv.writer(csv_file) + + # Write header row + writer.writerow(["Time", "Open", "High", "Low", "Close", "Volume"]) + + for line in txt_file: + parts = line.strip().split(",") # Split by comma + if len(parts) == 9: # Ensure there are enough columns + time = parts[2] # Extract time + open_price = parts[3] + high = parts[4] + low = parts[5] + close = parts[6] + volume = parts[7] + + # Write row without the first two unnecessary columns + writer.writerow([time, open_price, high, low, close, volume]) + +print(f"CSV file saved as {output_file}") + diff --git a/src/Machine-Learning/LSTM-python/backups/LSTMDQNbadreward.py b/src/MidasAgent/past_iterations/backups/LSTMDQNbadreward.py similarity index 100% rename from src/Machine-Learning/LSTM-python/backups/LSTMDQNbadreward.py rename to src/MidasAgent/past_iterations/backups/LSTMDQNbadreward.py diff --git a/src/Machine-Learning/LSTM-python/past_iterations/main.py.iteration1 b/src/MidasAgent/past_iterations/main.py.iteration1 similarity index 100% rename from src/Machine-Learning/LSTM-python/past_iterations/main.py.iteration1 rename to src/MidasAgent/past_iterations/main.py.iteration1 diff --git a/src/Machine-Learning/LSTM-python/past_iterations/main.py.iteration2 b/src/MidasAgent/past_iterations/main.py.iteration2 similarity index 100% rename from src/Machine-Learning/LSTM-python/past_iterations/main.py.iteration2 rename to src/MidasAgent/past_iterations/main.py.iteration2 diff --git a/src/Machine-Learning/LSTM-python/past_iterations/main.py.iteration3 b/src/MidasAgent/past_iterations/main.py.iteration3 similarity index 100% rename from src/Machine-Learning/LSTM-python/past_iterations/main.py.iteration3 rename to src/MidasAgent/past_iterations/main.py.iteration3 diff --git a/src/Machine-Learning/LSTM-python/past_iterations/main.py.iteration4 b/src/MidasAgent/past_iterations/main.py.iteration4 similarity index 100% rename from src/Machine-Learning/LSTM-python/past_iterations/main.py.iteration4 rename to src/MidasAgent/past_iterations/main.py.iteration4 diff --git a/src/MidasAgent/requirements.txt b/src/MidasAgent/requirements.txt new file mode 100644 index 0000000..3db53fd --- /dev/null +++ b/src/MidasAgent/requirements.txt @@ -0,0 +1,95 @@ +absl-py==2.1.0 +alembic==1.15.1 +astunparse==1.6.3 +certifi==2025.1.31 +charset-normalizer==3.4.1 +cloudpickle==3.1.1 +colorlog==6.9.0 +contourpy==1.3.0 +cycler==0.12.1 +Farama-Notifications==0.0.4 +filelock==3.17.0 +flatbuffers==25.2.10 +fonttools==4.56.0 +fsspec==2025.2.0 +gast==0.6.0 +google-pasta==0.2.0 +GPUtil==1.4.0 +greenlet==3.1.1 +grpcio==1.70.0 +gym==0.26.2 +gym-notices==0.0.8 +gymnasium==1.0.0 +h5py==3.13.0 +idna==3.10 +importlib_metadata==8.6.1 +importlib_resources==6.5.2 +Jinja2==3.1.6 +joblib==1.4.2 +keras==3.9.0 +kiwisolver==1.4.7 +libclang==18.1.1 +Mako==1.3.9 +Markdown==3.7 +markdown-it-py==3.0.0 +MarkupSafe==3.0.2 +matplotlib==3.9.4 +mdurl==0.1.2 +ml-dtypes==0.4.1 +mpmath==1.3.0 +namex==0.0.8 +networkx==3.2.1 +numpy==2.0.2 +nvidia-cublas-cu12==12.4.5.8 +nvidia-cuda-cupti-cu12==12.4.127 +nvidia-cuda-nvrtc-cu12==12.4.127 +nvidia-cuda-runtime-cu12==12.4.127 +nvidia-cudnn-cu12==9.1.0.70 +nvidia-cufft-cu12==11.2.1.3 +nvidia-curand-cu12==10.3.5.147 +nvidia-cusolver-cu12==11.6.1.9 +nvidia-cusparse-cu12==12.3.1.170 +nvidia-cusparselt-cu12==0.6.2 +nvidia-nccl-cu12==2.21.5 +nvidia-nvjitlink-cu12==12.4.127 +nvidia-nvtx-cu12==12.4.127 +opt_einsum==3.4.0 +optree==0.14.1 +optuna==4.2.1 +optuna-integration==4.2.1 +packaging==24.2 +pandas==2.2.3 +pillow==11.1.0 +protobuf==5.29.3 +psutil==7.0.0 +Pygments==2.19.1 +pyparsing==3.2.1 +python-dateutil==2.9.0.post0 +pytz==2025.1 +PyYAML==6.0.2 +requests==2.32.3 +rich==13.9.4 +scikit-learn==1.6.1 +scipy==1.13.1 +seaborn==0.13.2 +Shimmy==2.0.0 +six==1.17.0 +SQLAlchemy==2.0.38 +stable_baselines3==2.5.0 +sympy==1.13.1 +tabulate==0.9.0 +tensorboard==2.18.0 +tensorboard-data-server==0.7.2 +tensorflow==2.18.0 +tensorflow-io-gcs-filesystem==0.37.1 +termcolor==2.5.0 +threadpoolctl==3.5.0 +torch==2.6.0 +tqdm==4.67.1 +triton==3.2.0 +typing_extensions==4.12.2 +tzdata==2025.1 +urllib3==2.3.0 +Werkzeug==3.1.3 +wrapt==1.17.2 +zipp==3.21.0 diff --git a/src/Machine-Learning/tests/3_month_testing_data.csv b/src/MidasTests/3_month_testing_data.csv similarity index 100% rename from src/Machine-Learning/tests/3_month_testing_data.csv rename to src/MidasTests/3_month_testing_data.csv diff --git a/src/Machine-Learning/LSTM-in-pure-c/README.md b/src/MidasTests/LSTM-in-pure-c/README.md similarity index 100% rename from src/Machine-Learning/LSTM-in-pure-c/README.md rename to src/MidasTests/LSTM-in-pure-c/README.md diff --git a/src/Machine-Learning/LSTM-in-pure-c/makefile b/src/MidasTests/LSTM-in-pure-c/makefile similarity index 100% rename from src/Machine-Learning/LSTM-in-pure-c/makefile rename to src/MidasTests/LSTM-in-pure-c/makefile diff --git a/src/Machine-Learning/tests/Makefile b/src/MidasTests/Makefile similarity index 100% rename from src/Machine-Learning/tests/Makefile rename to src/MidasTests/Makefile diff --git a/src/Machine-Learning/tests/RNN-LSTM/BATS_GTLB, 5_01fcd.csv b/src/MidasTests/RNN-LSTM/BATS_GTLB, 5_01fcd.csv similarity index 100% rename from src/Machine-Learning/tests/RNN-LSTM/BATS_GTLB, 5_01fcd.csv rename to src/MidasTests/RNN-LSTM/BATS_GTLB, 5_01fcd.csv diff --git a/src/Machine-Learning/tests/RNN-LSTM/GTLC.csv b/src/MidasTests/RNN-LSTM/GTLC.csv similarity index 100% rename from src/Machine-Learning/tests/RNN-LSTM/GTLC.csv rename to src/MidasTests/RNN-LSTM/GTLC.csv diff --git a/src/Machine-Learning/tests/RNN-LSTM/README.txt b/src/MidasTests/RNN-LSTM/README.txt similarity index 100% rename from src/Machine-Learning/tests/RNN-LSTM/README.txt rename to src/MidasTests/RNN-LSTM/README.txt diff --git a/src/Machine-Learning/tests/RNN-LSTM/gitlab_lstm_nextday b/src/MidasTests/RNN-LSTM/gitlab_lstm_nextday similarity index 100% rename from src/Machine-Learning/tests/RNN-LSTM/gitlab_lstm_nextday rename to src/MidasTests/RNN-LSTM/gitlab_lstm_nextday diff --git a/src/Machine-Learning/tests/RNN-LSTM/gitlab_lstm_nextday.c b/src/MidasTests/RNN-LSTM/gitlab_lstm_nextday.c similarity index 100% rename from src/Machine-Learning/tests/RNN-LSTM/gitlab_lstm_nextday.c rename to src/MidasTests/RNN-LSTM/gitlab_lstm_nextday.c diff --git a/src/Machine-Learning/tests/RNN-LSTM/improvements.c b/src/MidasTests/RNN-LSTM/improvements.c similarity index 100% rename from src/Machine-Learning/tests/RNN-LSTM/improvements.c rename to src/MidasTests/RNN-LSTM/improvements.c diff --git a/src/Machine-Learning/tests/RNN-LSTM/l.txt b/src/MidasTests/RNN-LSTM/l.txt similarity index 100% rename from src/Machine-Learning/tests/RNN-LSTM/l.txt rename to src/MidasTests/RNN-LSTM/l.txt diff --git a/src/Machine-Learning/tests/RNN-LSTM/output.txt b/src/MidasTests/RNN-LSTM/output.txt similarity index 100% rename from src/Machine-Learning/tests/RNN-LSTM/output.txt rename to src/MidasTests/RNN-LSTM/output.txt diff --git a/src/Machine-Learning/tests/RNN-LSTM/price_predictor b/src/MidasTests/RNN-LSTM/price_predictor similarity index 100% rename from src/Machine-Learning/tests/RNN-LSTM/price_predictor rename to src/MidasTests/RNN-LSTM/price_predictor diff --git a/src/Machine-Learning/tests/RNN-LSTM/price_predictor.c b/src/MidasTests/RNN-LSTM/price_predictor.c similarity index 100% rename from src/Machine-Learning/tests/RNN-LSTM/price_predictor.c rename to src/MidasTests/RNN-LSTM/price_predictor.c diff --git a/src/Machine-Learning/tests/RNN-LSTM/test_concept_for_synthetic_data/stock_lstm b/src/MidasTests/RNN-LSTM/test_concept_for_synthetic_data/stock_lstm similarity index 100% rename from src/Machine-Learning/tests/RNN-LSTM/test_concept_for_synthetic_data/stock_lstm rename to src/MidasTests/RNN-LSTM/test_concept_for_synthetic_data/stock_lstm diff --git a/src/Machine-Learning/tests/RNN-LSTM/test_concept_for_synthetic_data/stock_lstm.c b/src/MidasTests/RNN-LSTM/test_concept_for_synthetic_data/stock_lstm.c similarity index 100% rename from src/Machine-Learning/tests/RNN-LSTM/test_concept_for_synthetic_data/stock_lstm.c rename to src/MidasTests/RNN-LSTM/test_concept_for_synthetic_data/stock_lstm.c diff --git a/src/Machine-Learning/tests/RNN-LSTM/test_concept_for_synthetic_data/stock_lstm_prod b/src/MidasTests/RNN-LSTM/test_concept_for_synthetic_data/stock_lstm_prod similarity index 100% rename from src/Machine-Learning/tests/RNN-LSTM/test_concept_for_synthetic_data/stock_lstm_prod rename to src/MidasTests/RNN-LSTM/test_concept_for_synthetic_data/stock_lstm_prod diff --git a/src/Machine-Learning/tests/RNN-LSTM/test_concept_for_synthetic_data/stock_lstm_prod.c b/src/MidasTests/RNN-LSTM/test_concept_for_synthetic_data/stock_lstm_prod.c similarity index 100% rename from src/Machine-Learning/tests/RNN-LSTM/test_concept_for_synthetic_data/stock_lstm_prod.c rename to src/MidasTests/RNN-LSTM/test_concept_for_synthetic_data/stock_lstm_prod.c diff --git a/src/Machine-Learning/tests/simple_feed_forward_model_with_indicators b/src/MidasTests/simple_feed_forward_model_with_indicators similarity index 100% rename from src/Machine-Learning/tests/simple_feed_forward_model_with_indicators rename to src/MidasTests/simple_feed_forward_model_with_indicators diff --git a/src/Machine-Learning/tests/simple_feed_forward_model_with_indicators.c b/src/MidasTests/simple_feed_forward_model_with_indicators.c similarity index 100% rename from src/Machine-Learning/tests/simple_feed_forward_model_with_indicators.c rename to src/MidasTests/simple_feed_forward_model_with_indicators.c diff --git a/src/Machine-Learning/tests/stock_predictor b/src/MidasTests/stock_predictor similarity index 100% rename from src/Machine-Learning/tests/stock_predictor rename to src/MidasTests/stock_predictor diff --git a/src/Machine-Learning/tests/stock_predictor.c b/src/MidasTests/stock_predictor.c similarity index 100% rename from src/Machine-Learning/tests/stock_predictor.c rename to src/MidasTests/stock_predictor.c