AiDataGenByLeo/Py/run_training.py
Nique_372 f4acae6ce0
2026-03-30 09:08:59 -05:00

74 lines
No EOL
2.6 KiB
Python

# Copyright 2026, Niquel Mendoza | Leo.
# https://www.mql5.com/es/users/nique_372
# trainer_regression.py
#+------------------------------------------------------------------+
#| Imports |
#+------------------------------------------------------------------+
from final_trainer import CPipelineTraining
from final_trainer import SimpleLogger
from final_trainer import CMqlComunication
import argparse
import json
from pathlib import Path
import sys
# nota
# cuando se pasa a .exe hacerlo con todas las dependecias de los otros folders
#pyinstaller --onefile AiDataGenByLeo\Py\run_training.py
#$env:PYTHONPATH = "C:\Users\leoxd\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Shared Projects;C:\Users\leoxd\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Shared Projects\AiDataGenByLeo\Py"
#+------------------------------------------------------------------+
#| Funcion principal de ejecucion |
#+------------------------------------------------------------------+
def main():
parser = argparse.ArgumentParser()
# argrumentos requeridos
parser.add_argument('--config', required=True)
parser.add_argument("--results_json", required=True)
parser.add_argument("--lock_bin", required=True)
parser.add_argument('--log_file', required=False, default=None) # opcional
# args
args = parser.parse_args()
# logs
if args.log_file:
log_file = open(args.log_file, "w", encoding="utf-8")
sys.stdout = log_file
sys.stderr = log_file
# Clase comunicador
config_comunicador : dict = {
"path_json" : args.results_json,
"path_bin" : args.lock_bin
}
comunicador : CMqlComunication = CMqlComunication(config_comunicador)
# Cargamos la configuracion
cfg = json.loads(Path(args.config).read_text(encoding="utf-16"))
# Creamos el pipeline de entreminto
ejecutor : CPipelineTraining = CPipelineTraining(
cfg['general'],
cfg['regresion'],
cfg['clasificacion'],
SimpleLogger.CLoggerBase.LOG_ALL,
comunicador
)
# Ejecutamos el entreamiento
if not ejecutor.Execute():
print("Fallo al ejecutar el pipeline")
#+------------------------------------------------------------------+
#| Main |
#+------------------------------------------------------------------+
if __name__ == "__main__":
main()