Table of Contents
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.
- Cree el archivo YAML
- 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
- 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
- Por ultimo queremos que el panel nos notifique cuando haya terminado de generar datos, asi que podemos usar cualquier funcion de https://forge.mql5.io/nique_372/AiDataTaskRuner/wiki/Wf_Message, en mi caso me ire por alertas basicas:
- 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...
AiTaskRunnerByLeo
Panel
General
Data generation
Feature Editor
Training
AI
Utils
Workflows
Config
External Scripts