1 Wf_Examples
Niquel Mendoza edited this page 2026-04-16 18:06:56 +00:00

Ejemplos de workflows

A continuación se presentan ejemplos de como se generan datos

Generación de datos

Para la generacion de datos de un bot, primero este debera de ser compatible con la esturucta de AiDataGenByLeo, como ejemplo tomaremos este proyecto: https://forge.mql5.io/nique_372/EasySbAi

Pre requisitos

Sera necesario ya tener setfiles deinfos y estructurados para que sean compatible con el EA FolderToTaskCsv2, para mas info: https://forge.mql5.io/nique_372/AiDataTaskRuner/wiki/FolderToTaskCsv

Workflow

En este workflow la idea sera primero genrar un archivo .csv con todas las tareas que luego le pasaremos al panel para que las ejeucte.

  1. Cree el archivo YAML
  2. Defina el nombre y variables de entorno que se usaran (esto es util para evitar la repteticion):
name: "Simple generacion de datos"
env:
  main_folder: "EasySbAi" 
  task_csv: "task_from_folder.csv"
  common_folder: true
  1. Definamos los pasos de este workflow
  • Primero eliminaremos el archivo move_files.json que crearemos luego, esto para que no de errores en su proxima creacion ademas de que cuando corramos el ea que recopile la fino de los setfiles y la traspase a un csv no leea por accidente dicho json, ademas agregaremos un campo "valid_results" este campo es un array añadiremos un unico valor "any", este valor le indica al orquestador que considere como exito este paso a cualquier valore de resultado.
  - name: "FileDelete"
    module: "File"
    valid_results: ["any"]
    with:
      file_name: "${{env.main_folder}}\\Config\\move_files.json" # El archivo json estara junto a los sets lo eliminamos (esto para que no falle el EA)
      common_flag: ${{env.common_folder}} 
  • Continuaremos ejecutando el ea que se encargara de crear el archivo de tareas, por lo que ejecutamos el EA FolderToTaskCsv2:
  - name: "RunEA"
    module: "Generic"
    with:
      fixed:
        name: "Experts\\Shared Projects\\AiDataTaskRuner\\Utils\\FolderTaskToCSV2.ex5"   # ajusta la ruta real
        symbol: _Symbol
        timeframe: _Period
        run_flags: "DLL"
        ms_sincronizacion: 500
        timeout_segundos: 120
      ea_params:
        - InpFolder:                      ["TYPE_STRING", "${{env.main_folder}}\\"]
        - InpFolderIsInCommon:            ["TYPE_BOOL", "${{env.common_folder}}"]
        - InpParamActiveGenerateName:     ["TYPE_STRING", "InpStrategyAiGenerateDataMode"]
        - InpDataStartDate:               ["TYPE_DATETIME", "2021.01.01 00:00"]
        - InpDataEndDate:                 ["TYPE_DATETIME", "2025.06.01 00:00"]
        - InpCsvFileNameOutput:           ["TYPE_STRING", "${{env.task_csv}}"]
        - InpCsvFileNameOutputIsInCommon: ["TYPE_BOOL", "${{env.common_folder}}"] # sobre el folder common que estamos trabjando  
  • Luego crearemos el archivo de config json, en este archivo definimos que archivo movera (de los generados por el bot) el panel a las carpetas finales, en este caso los 6 archivos resultantes de la generacion de datos:
  - name: "WriteInFile"
    module: "File"
    with:
      open_flags: ["${{aidata.common_flag_val}}", "FILE_TXT"] # Aca usamos la del panel dado que el panel espera que el archivo se ubica ahi
      file_name: "${{env.main_folder}}\\Config\\move_files.json"
      # Escribimos en el archivo con \\dado que intermante al leer el json se escapa asi que cuidado con eso
      content: |
       {
        "files_to_move": [
          "${{env.main_folder}}\\data_tp.csv",
          "${{env.main_folder}}\\data_sl.csv",
          "${{env.main_folder}}\\data_pred.csv",
          "${{env.main_folder}}\\saclertp_median_iqr.csv",
          "${{env.main_folder}}\\saclersl_median_iqr.csv",
          "${{env.main_folder}}\\saclerpred_median_iqr.csv"
        ]
       }
  • Ahora antes de decirle al panel que ejecute todas las tareas del csv de tareas que generamos en el paso 2, tenemos que cargar primero la config inicial asi que llamaremos a la funcion de la API de AiDataTaskRunner LoadConfigInPlace, con los parameotrs necesarios:
  - name: "LoadConfigInPlace"
    module: "AiDataTaskRunner"
    with:
      file_name: "${{aidata.task_folder}}Wf\\config.txt"  
      progress_csv: "temp.csv"
      main_folder: "${{env.main_folder}}\\"
      expert_path: "Experts\\Shared Projects\\EasySbAi\\Ea.ex5"    
      file_name_json_config: "${{env.main_folder}}\\Config\\move_files.json"
  • Ahora si le decimos al panel que carge todas las tareas del csv que generamos:
  - name: "LoadTaskInFile"
    module: "AiDataTaskRunner"
    with:
      file_name: "${{env.task_csv}}"
  • Luego le decimos al panel que ejecute todas las tareas que tiene pendientes:
  - name: "RunAllTask"
    module: "AiDataTaskRunner"
    with:
      strict: true     
      ms_pool: 2500

  - name: "Alert"
    module: "Message"
    with: 
      message: "Se acabaron todas las tareas revisa... la terminal"   

Listo ya hemos terminado, ahora podemos guardar este archivo en el formato YAML y cargalo en el panel...