English Русский 中文 Deutsch 日本語 Português
preview
Introducción a MQL5 (Parte 7): Guía para principiantes sobre cómo crear asesores expertos y utilizar código generado por IA en MQL5

Introducción a MQL5 (Parte 7): Guía para principiantes sobre cómo crear asesores expertos y utilizar código generado por IA en MQL5

MetaTrader 5Trading | 19 septiembre 2024, 10:22
554 0
Israel Pelumi Abioye
Israel Pelumi Abioye

Introducción

¡Bienvenidos nuevamente a nuestro viaje MQL5! Prepárese para profundizar y explorar el fascinante mundo de los ejemplos del mundo real mientras comenzamos la Parte 7 de nuestra serie de programación MQL5. En este capítulo vamos a pasar de la teoría a la práctica, con ejercicios prácticos que nos ayudarán a poner en práctica las ideas que hemos estudiado en artículos anteriores.

Comprender la importancia del pseudocódigo será un componente esencial de nuestra investigación. El pseudocódigo actúa como un vínculo entre las implementaciones de código concreto y los conceptos algorítmicos abstractos. Antes de comenzar a codificar, nos permite esbozar rápida y fácilmente nuestras ideas en un formato que los humanos pueden leer. En las próximas secciones, veremos el poder del pseudocódigo y cómo ayuda a convertir las estrategias algorítmicas en código viable.

El rápido avance de la inteligencia artificial en el panorama tecnológico actual ha provocado debates sobre el futuro de la codificación. Algunos argumentan que el código producido por IA podría reemplazar la necesidad de conocimientos de codificación convencionales. Pero nada más lejos de la realidad que esto. Este artículo busca disipar este mito y resaltar la importancia de saber codificar. Vamos a revelar formas en las que podemos incorporar código generado por IA en nuestros proyectos de programación de manera fluida para que complemente nuestras habilidades en lugar de reemplazarlas. Entonces, comencemos y utilicemos la programación MQL5 por completo sin demora. Prepárate para aplicar la teoría a situaciones del mundo real y ¡hagamos algo de magia!

En este artículo cubriremos los siguientes temas:

  • Dominando MQL5
  • Pseudocódigo
  • Generación de códigos MQL5 con IA

En el artículo anterior, mencioné que incluiría un video sobre funciones de matriz. Este vídeo también servirá como recordatorio de dónde lo dejamos.




1. Dominando MQL5

Aprender todos los aspectos de MQL5 a la vez puede resultar abrumador. En cambio, centrarse en proyectos puede hacer que el proceso de aprendizaje sea más manejable y agradable. Comience por dominar conceptos fundamentales como variables, bucles, condiciones, funciones y todos los demás conceptos básicos discutidos en artículos anteriores. Una vez que tengas un dominio sólido de estos conceptos básicos, comienza a explorar proyectos que te interesen, como crear Expert Advisors o indicadores personalizados. Cada proyecto en el que trabajes presentará nuevos desafíos y te enseñará lecciones invaluables. A través del aprendizaje basado en proyectos, puedes poner en práctica tus conocimientos teóricos en escenarios del mundo real, lo que te ayudará a comprender mejor las complejidades de MQL5. Adquirirás progresivamente los conocimientos y las habilidades necesarias para manejar la complejidad de la programación MQL5 a medida que trabajes en una variedad de proyectos.

Aceptar este método de aprendizaje te da la capacidad de avanzar como programador de manera constante y segura. En lugar de sentirse intimidado por la inmensidad de MQL5, lo abordará proyecto por proyecto, aumentando gradualmente su competencia. Por lo tanto, acepte el aprendizaje basado en proyectos; es la forma más confiable de dominar MQL5. Decidí utilizar el aprendizaje basado en proyectos a lo largo de esta serie debido a su eficacia. En lugar de lanzarte de cabeza a las complejidades de MQL5, nos centraremos en proyectos prácticos que te permitan aprender a través de la experiencia. Trabajar en proyectos del mundo real le ayudará a comprender mejor el tema y desarrollar habilidades útiles que mejorarán sus estrategias comerciales.

Comenzaremos con proyectos básicos, aptos para principiantes, y avanzaremos hasta otros más complejos. Si sigue este enfoque metódico, podrá asegurarse de tener una comprensión sólida de la programación MQL5 antes de avanzar a temas más complejos. Adquirirás nuevas habilidades e ideas con cada proyecto, lo que te ayudará a mejorar gradualmente. El proyecto en el que trabajaremos en este artículo actuará como un ejemplo práctico del procedimiento secuencial para generar asesores expertos en MQL5. También analizaremos cómo optimizar los beneficios del código generado por IA en el contexto de MQL5.

El proyecto para principiantes en el que trabajaremos es un reloj de trading con alarma en MQL5. Lo que distingue a este proyecto es el uso de un mensaje de voz pregrabado en lugar del sonido estándar proporcionado por MQL5. Aprenderá a crear un sistema de alarma que permita a los usuarios configurar alertas mediante mensajes de voz, agregando un toque personalizado a su experiencia comercial.

El primer paso para crear un asesor experto en MQL5 es enumerar todos los componentes necesarios que implicará el EA. Para garantizar que el EA se cree con un objetivo y un plan precisos en mente, esta etapa de planificación es esencial. Para que el EA analice los datos del mercado y tome decisiones comerciales, primero debe decidir la estrategia comercial que utilizará. Esto incluye especificar las reglas de entrada y salida, los procedimientos de gestión de riesgos y cualquier otro requisito especial.

Conocer el tipo de asesor experto en el que estás trabajando es importante a la hora de escribirlo. Si bien algunos EA se centran principalmente en realizar operaciones utilizando estrategias predeterminadas, otros tienen funciones diversas como gestión de riesgos, monitoreo de datos o incluso enviar alertas comerciales sin realizar operaciones realmente. Comprender el tipo de EA que está creando le permitirá orientar sus esfuerzos y le ayudará a diseñar un EA que lleve a cabo su propósito previsto de manera eficaz y eficiente. Al final de este artículo, los lectores no solo tendrán un EA funcional capaz de enviar alertas de voz, sino que también obtendrán información valiosa sobre el proceso de desarrollo de EA y el potencial de las estrategias comerciales asistidas por IA.


2. Pseudocódigo

2.1. ¿Qué es el pseudocódigo?

El pseudocódigo es una forma de definir lo que quieres hacer antes de empezar a codificar. Puedes especificar tus objetivos antes de comenzar a codificar utilizando pseudocódigo. Es una forma de describir sus objetivos para su programa en un lenguaje sencillo y comprensible sin preocuparse por la sintaxis del lenguaje de programación. Esto hace que sea más fácil escribir el código real más adelante, ayudándole a organizar los pasos y la lógica que seguirá su programa.

Analogía

Digamos que quieres usar un programa de computadora para sumar dos números entre sí. Te sientas y estableces todos los pasos que debes seguir antes de escribir el código real. ¡La forma en que planificamos es similar al pseudocódigo! Le ayuda a delinear la funcionalidad de su programa antes de comenzar a escribir cualquier código.

Así se verá tu pseudocódigo:

Primer paso: introducir números.

  • Pídale al usuario que ingrese el primer y el segundo número.

Segundo paso: Sumar números e imprimir el resultado.

  • Sume el primer número al segundo número e imprima el resultado.

Cada paso de este pseudocódigo indica una acción particular que debes realizar para sumar los dos números. Ayuda a descomponer el proceso en tareas más pequeñas y factibles, de forma similar a cuando cocinas siguiendo una receta. Escribir tu programa paso a paso se vuelve más fácil cuando está planificado de esta manera, de forma similar a cuando sigues instrucciones para resolver un problema de matemáticas.

¿Por qué es importante el pseudocódigo?

Incluso los programadores experimentados a menudo pasan por alto el pseudocódigo, a pesar de ser un componente crucial de la programación. Si bien es fácil dejarse llevar por la emoción de escribir código y ver cómo el programa cobra vida, planificar y delinear las ideas en pseudocódigo puede acelerar significativamente el desarrollo. Como muchos desarrolladores, también he sido culpable de lanzarme a codificar sin tener un plan claro. Sin embargo, este método puede dar lugar a malentendidos, ineficacia y pérdida de tiempo.

En mi experiencia, escribir pseudocódigo antes de comenzar a codificar me ha ahorrado muchas horas de frustración y depuración. Cuando estás ansioso por ver resultados, es fácil subestimar la importancia de la organización y la planificación. Dicho esto, no se puede negar que el uso de pseudocódigo puede ayudarte con la programación porque te proporciona claridad, dirección y confianza.

Además, el pseudocódigo juega un papel importante en la creación de asesores expertos y hace que el uso del código generado por IA sea más fácil de entender en MQL5. Al trabajar con algoritmos complejos y herramientas impulsadas por IA, el pseudocódigo actúa como un puente entre los conceptos abstractos y la implementación práctica. Ayuda a los desarrolladores a traducir ideas de alto nivel en pasos prácticos, lo que hace que el proceso de integración de código generado por IA en programas MQL5 sea más sencillo y accesible. Al utilizar pseudocódigo para planificar y delinear la lógica de sus EA, puede asegurarse de que su código esté bien estructurado, sea eficiente y fácil de mantener.

Otra ventaja de comprender el pseudocódigo es su utilidad paraindependienteoportunidades dentro de la comunidad MQL5. Al comunicar eficazmente sus planes y estrategias de programación a los clientes a través de pseudocódigo, puede demostrar su experiencia y aumentar sus posibilidades de conseguir proyectos para crear asesores expertos adaptados a sus necesidades específicas.

2.2. Cómo escribir pseudocódigo

El primer paso para escribir pseudocódigo es dividir los objetivos del programa en tareas más pequeñas y más factibles. A continuación, explique cada paso del proceso en términos simples y directos. Evite empantanarse en la sintaxis de un lenguaje de programación en particular y, en cambio, concéntrese en la lógica general y el flujo de su programa.

Echemos un vistazo al EA en el que trabajaremos. Por ejemplo, trabajaremos en una alarma comercial que le permitirá configurar recordatorios en momentos específicos. Lo especial de este proyecto es que tendrás la opción de elegir el sonido que quieras al configurar el recordatorio. Podríamos escribir pseudocódigo para esto de la siguiente manera:

El primer paso es inicializar el EA:

  • Definir y configurar las variables y ajustes necesarios.

El cuarto paso es configurar recordatorios:

  • Permita a los usuarios ingresar las horas de alarma deseadas y elegir el sonido que prefieran para cada recordatorio.
  • Almacene las horas de alarma y los sonidos seleccionados en las variables respectivas.

El tercer paso es monitorear la zona horaria comercial, lo que implica:

  • Comparando continuamente la hora actual con las horas de alarma designadas.
  • Activa la alerta de audio cuando se alcanza la hora de alarma.

El cuarto paso es hacer sonar la alerta de audio:

  • Notificar a los comerciantes la hora de recordatorio establecida.
  • Reproduzca el archivo de sonido seleccionado para alertar a los comerciantes.

Cada paso de este pseudocódigo representa una tarea o acción particular que llevará a cabo el EA. Antes de comenzar el proceso de codificación real, podemos planificar de manera eficiente la lógica y la estructura de nuestro EA dividiendo los objetivos del programa en pasos más pequeños y explicándolos en términos simples.


3. Generación de códigos MQL5 con IA

Los procesos de codificación han avanzado significativamente como resultado de la inteligencia artificial (IA). El nuevo enfoque transforma por completo la forma en que los desarrolladores crean asesores expertos (EAs). La automatización de la generación de código se ha convertido en un beneficio importante de la programación MQL5 con herramientas impulsadas por IA. Estas herramientas utilizan algoritmos avanzados para traducir instrucciones de alto nivel y pseudocódigo en código MQL5 ejecutable mediante el análisis de los datos de entrada. La inteligencia artificial acorta los tiempos de desarrollo y aumenta la productividad en la generación de código al automatizar tareas repetitivas y disminuir la intervención manual.

Pero incluso con estos avances, la tecnología de IA aún está en sus primeras etapas y es propensa a errores de codificación. Es fundamental reconocer que el código producido por IA podría no ser perfecto y podría ser necesario corregirlo. Por lo tanto, para utilizar eficazmente los códigos generados por IA, los desarrolladores aún necesitan tener un conocimiento básico o intermedio de MQL5. Esto garantiza la corrección y confiabilidad del código generado por la IA al permitirle reconocer y corregir errores cometidos por el sistema. Si bien la IA acelera el proceso de creación de código, los desarrolladores aún necesitan estar informados y atentos para garantizar la calidad del producto terminado.

3.1. Cómo generar códigos de IA precisos

Aquí está el proceso paso a paso:

3.1.1 Pseudocódigo de EA

Antes de utilizar IA para generar código MQL5, produzca un pseudocódigo completo. Divida los objetivos de su EA en pasos más pequeños y factibles, y describa las condiciones y acciones para cada paso.

Después de seleccionar una herramienta impulsada por IA para generar código MQL5, el paso siguiente es proporcionar un pseudocódigo completo que describa la lógica y la funcionalidad de su asesor experto. Durante esta etapa, cada paso del pseudocódigo le pedirá que haga preguntas y profundice en los detalles del funcionamiento de su EA. Al dividir el pseudocódigo en pasos procesables y abordar las preguntas que surgen en cada paso, puede asegurarse de que su EA esté diseñado integralmente e implemente eficazmente su estrategia comercial.

El primer paso es inicializar el EA:

  • Defina y configure las variables y configuraciones necesarias:

Este paso plantea preguntas como:

  • ¿Qué variables son necesarias para que el EA funcione?
  • ¿Qué tipos de datos se deben utilizar para las variables?
  • ¿Cómo se deben determinar los valores predeterminados para las variables? ¿Hay dependencias o recursos externos que deban cargarse?

Con estas preguntas, podemos asegurar que el primer paso de inicialización del EA se ejecute de manera efectiva, con las variables y configuraciones necesarias configuradas, y el mensaje de voz grabado esté correctamente cargado y preparado para su reproducción durante las sesiones de negociación designadas.

El cuarto paso es configurar recordatorios:

  • Permita a los usuarios ingresar las horas de alarma deseadas y elegir el sonido que prefieran para cada recordatorio.
  • Almacene las horas de alarma y los sonidos seleccionados en las variables respectivas.

Este paso plantea preguntas como:

  • ¿En qué formato deben estar las horas de alarma?
  • ¿Cómo seleccionarán los usuarios el sonido que prefieren para el recordatorio?
  • ¿Dónde se almacenarán los tiempos y sonidos de alarma seleccionados?
  • ¿Los usuarios tendrán la opción de modificar o eliminar recordatorios existentes?

El tercer paso es monitorear la zona horaria comercial, lo que implica:

  • Comparando continuamente la hora actual con las horas de alarma designadas.
  • Activa la alerta de audio cuando se alcanza la hora de alarma.

Este paso plantea preguntas como:

  • ¿Cómo comparará continuamente la EA la hora actual con las horas de alarma designadas?
  • ¿Qué acción se tomará cuando se alcance la hora de alarma?
  • ¿Con qué frecuencia el EA comprobará las horas de alarma?

El cuarto paso es configurar recordatorios:

  • El cuarto paso es hacer sonar la alerta de audio:
  • Notificar a los comerciantes la hora de recordatorio establecida.
  • Reproduzca el archivo de sonido seleccionado para alertar a los comerciantes.

Este paso plantea preguntas como:

  • ¿Cómo agregamos el mensaje de voz grabado a nuestro proyecto MQL5?
  • ¿Cómo se reproducirá el archivo de sonido seleccionado para alertar a los comerciantes?

Este tipo de preguntas son esenciales para el proceso de creación de código de IA. Al responderlas con cuidado, creamos una hoja de ruta precisa para la generación de código impulsada por IA. Este procedimiento garantiza que el código final capture con precisión las complejidades de nuestro proyecto, abriendo la puerta para la incorporación fluida de la tecnología de IA en la creación de nuestros asesores expertos (EA).

3.1.2. Generación de código

Basándose en las acciones y condiciones dadas, genere código MQL5 paso a paso utilizando algunas de las preguntas derivadas del pseudocódigo como guía. Utilice la herramienta impulsada por IA elegida para descifrar cada segmento de pseudocódigo para el cual no tiene respuestas y conviértalo en código ejecutable MQL5. Asegúrese de que el código generado refleje adecuadamente la lógica y la funcionalidad previstas concentrándose en abordar cada paso por turno.

Es fundamental entender que el código que genera la IA no será la versión final que emplearemos. Más bien, actúan como modelos instructivos que le muestran a usted, como principiante, cómo lograr objetivos específicos en su proceso de creación de un asesor experto.

Como principiante, puedes comenzar a identificar algunas de las respuestas a estas preguntas y, al hacerlo, comprenderás mejor los próximos pasos que debes seguir con tu proyecto. It's critical to understand that this is also more about introducing the AI with your project's specifics, than merely asking it questions and expecting an answer. Puede mejorar activamente la comprensión que la IA tiene de su proyecto interactuando con ella y haciéndole preguntas relevantes. Este intercambio ayuda a mejorar la precisión del código que finalmente produce para que usted lo utilice. Cuanto más te comuniques con la IA y le brindes información de fondo sobre tu proyecto, más capaz será de ayudarte con éxito con tus tareas de codificación.

Nota: Antes de plantear preguntas a una IA sobre su proyecto, es esencial proporcionar primero una explicación detallada del proyecto. Esta introducción sirve como base para que la IA comprenda el contexto y los objetivos del proyecto.

Para demostrar cómo generar código a partir de la IA, comencemos con el primer paso utilizando una de las preguntas:

¿Qué variables son necesarias para que el EA funcione?

Respuesta de la IA:

Para el proyecto de alarma comercial, son necesarias varias variables para que el EA funcione de manera efectiva. Estos pueden incluir:

  • Variables de tiempos de alarma: Variables para almacenar los tiempos de alarma definidos por el usuario. Estas podrían ser variables de fecha y hora que representan momentos específicos durante el día de negociación en los que se deben activar los recordatorios.
  • Variables de selección de sonido: Variables para almacenar la elección de sonido del usuario para cada alarma. Esta podría ser una variable de cadena que contenga la ruta del archivo o el nombre del archivo de sonido seleccionado.
  • Variable de tiempo actual: Una variable para almacenar la hora actual, que se comparará continuamente con las horas de alarma para activar los recordatorios.
  •  Variables de ruta del archivo de sonido: Variables para almacenar las rutas de los archivos de sonido disponibles que el usuario puede elegir.
  • Variable del mensaje de notificación: Una variable para almacenar cualquier mensaje de notificación que pueda acompañar a las alarmas.
  • Otras variables de configuración: Es posible que sean necesarias variables adicionales según los requisitos específicos del proyecto, como variables para controlar el comportamiento del EA o para almacenar las preferencias del usuario.
Estas variables son esenciales para que el EA rastree los tiempos de alarma, administre las preferencias del usuario y active las alertas de audio en los momentos especificados.

Ahora, con estas respuestas teóricas en la mano, es evidente que las respuestas de la IA podrían no ser siempre perfectas. Sin embargo, al proporcionar una explicación detallada del proyecto de antemano, permitimos que la IA proporcione respuestas más completas. Esta descripción detallada ayuda a la IA a comprender el contexto de las preguntas y proporciona respuestas más perspicaces. Este enfoque mejora la calidad de las respuestas de la IA y fomenta una interacción más fructífera entre los requisitos del proyecto y las capacidades de la IA.

Para una explicación aún más clara, ahora puedes pedirle a la IA que incluya un ejemplo de código. Esta adición ilustrará aún más cómo los conceptos teóricos discutidos se traducen en la implementación del código real, proporcionando una demostración práctica de la funcionalidad del proyecto.

Respuesta de la IA:

// Define variables for alarm times
   datetime Alarm1;
   datetime Alarm2;
   datetime Alarm3;

// Define variables for sound selection
   string Sound1 = "alert1.wav";
   string Sound2 = "alert2.wav";
   string Sound3 = "alert3.wav";
// Define variables for current time and notification message
   datetime CurrentTime;
   string NotificationMessage;

// Define other configuration variables
   int NumberOfAlarms = 3;

En este ejemplo:

  • Alarm1, Alarm2 y Alarm3 son variables de fecha y hora para almacenar las horas de alarma definidas por el usuario.
  • Sound1, Sound2 y Sound3 son variables de cadena que contienen las rutas de archivo o los nombres de los archivos de sonido seleccionados para cada alarma.
  •  NotificationMessage es una variable de cadena para almacenar cualquier mensaje de notificación.
  • NumberOfAlarms es una variable entera que indica el número total de alarmas que el usuario puede configurar.

Estas variables proporcionan la base necesaria para que el EA administre los tiempos de alarma, las selecciones de sonido y otras configuraciones requeridas para el proyecto.

Con la explicación proporcionada a la IA, ésta ofrece algunas respuestas, pero no son perfectas. Sin embargo, de esta respuesta puedes extraer algunas preguntas y pedirle a la IA que las refine según tus especificaciones.

El código proporcionado por la IA ayuda a identificar las variables necesarias para el proyecto. Sin embargo, para nuestro proyecto específico, queremos que el usuario ingrese los parámetros para el sonido y la alarma. Esto introduce un par de preguntas relacionadas con el paso dos del pseudocódigo:

  • ¿Cómo seleccionarán los usuarios el sonido y la hora que prefieren para el recordatorio?
  • ¿Dónde se almacenarán los tiempos y sonidos de alarma seleccionados?

Estas preguntas resaltan la necesidad de implementar la funcionalidad de entrada del usuario dentro del EA. Los usuarios deberían poder elegir el sonido que prefieran para cada recordatorio y especificar las horas de alarma correspondientes. Los tiempos y sonidos de alarma seleccionados deben almacenarse en variables dentro del EA para que se pueda acceder a ellos y utilizarlos cuando sea necesario. Esto garantiza que el EA funcione según las preferencias del usuario y active efectivamente las alarmas con los sonidos especificados en los momentos designados.

Respuesta de la IA:

Para permitir que los usuarios seleccionen el sonido que prefieren para cada recordatorio, puede definir una variable utilizando elinput palabra clave, especificando el tipo comostring. Esta variable almacenará el nombre del archivo de sonido seleccionado por el usuario. Aquí te explicamos cómo puedes modificar el código:

input string Alarm1 = "00:00:00";
input string Alarm2 = "00:00:00";
input string Alarm3 = "00:00:00";

input string Sound = ""; // User-selected sound filename

Con esta configuración, los usuarios pueden ingresar el nombre del archivo del sonido que desean usar para los recordatorios. Luego puedes usar esta variable Sound para reproducir el sonido seleccionado cuando se active el recordatorio.

Esto demuestra lo importante que es seguir el pseudocódigo paso a paso. Primero, determinamos qué variables son esenciales para que el EA funcione según lo previsto. La base del proyecto está formada por estas variables. El componente de interacción del usuario se aborda en el segundo paso, donde se les ofrece a los usuarios la opción de ingresar sus archivos de sonido preferidos y los horarios de alarma deseados. Seguir este proceso metódico garantiza que cada aspecto del proyecto se maneje metódicamente, lo que da como resultado una comprensión más completa. La interacción con la IA ayuda a refinar y aclarar los requisitos del proyecto, lo que conduce a una implementación más sólida, aunque el código proporcionado en esta etapa podría no ser la versión final.

Ahora pasamos al tercer paso, que es vigilar la zona horaria comercial, siguiendo la progresión del pseudocódigo. Esto nos hace pensar en las siguientes preguntas:

  • ¿Cómo realizará el EA un seguimiento de la diferencia horaria entre las horas de alarma establecidas y la hora actual?
  • Cuando llega la hora de una alarma, ¿qué sucederá?

Al responder estas preguntas, se guiará el proceso de desarrollo y el EA podrá monitorear los tiempos de alarma designados y tomar las medidas apropiadas según sea necesario.

Respuesta de la IA:

Para comparar continuamente la hora actual con las horas de alarma designadas, podemos utilizar un bucle que se ejecuta en cada tick de la plataforma comercial. Dentro de este bucle, comprobaremos si la hora actual coincide con alguna de las horas de alarma configuradas por el usuario.

// Inside the OnTick() function
// Get the current time
   datetime currentTime = TimeLocal();

// Check if the current time matches any of the alarm times
   if(currentTime == StringToTime(Alarm1) ||
      currentTime == StringToTime(Alarm2) ||
      currentTime == StringToTime(Alarm3))
     {
      // Trigger the audio alert
      PlaySound(Sound);
     }

En este fragmento de código:

  • Obtenemos la hora actual usando TimeLocal().
  • Comparamos la hora actual con cada una de las horas de alarma especificadas por el usuario utilizando StringToTime().
  • Si la hora actual coincide con alguna de las horas de alarma, activamos la alerta de audio reproduciendo el sonido seleccionado mediante PlaySound(Sound).

Este código garantiza que el EA monitoree continuamente los tiempos de alarma especificados y tome medidas cuando se alcanza un tiempo de alarma.

Las respuestas de la IA se vuelven más precisas a medida que avanzamos por las etapas descritas en el pseudocódigo. Esto pone de relieve la importancia de dividir metódicamente el proyecto en fases factibles. Las explicaciones de la IA se ajustan mejor a los objetivos del proyecto en cada paso. Nos ayuda a comprender mejor cómo abordar los aspectos más difíciles del proyecto, así como cómo abordar el proceso de desarrollo en sí.

Interactuar con la IA de forma iterativa está demostrando ser un proceso muy útil. Además de ayudarnos con el proyecto, está ampliando nuestra comprensión de cómo manejar sus complejidades. Estamos adquiriendo más conocimientos sobre cómo gestionar eficazmente los múltiples aspectos del proyecto a medida que interactuamos con la IA.

A medida que pasamos al cuarto paso del pseudocódigo, surgen nuevas preguntas que requieren consideración:

  • ¿Cómo agregamos el mensaje de voz grabado a nuestro proyecto MQL5?
  • ¿Cómo se reproducirá el archivo de sonido seleccionado para alertar a los comerciantes?

Para abordar estas cuestiones será necesario integrar archivos de audio en nuestro proyecto MQL5 e implementar la lógica para activar la reproducción del archivo de sonido seleccionado en los horarios de alarma designados. Exploremos estos aspectos más a fondo para garantizar que nuestro despertador comercial funcione según lo previsto.

Respuesta de la IA:

Para agregar un mensaje de voz a su proyecto MQL5, siga estos pasos:

  1. Prepare un mensaje de voz grabado en un formato compatible (por ejemplo, WAV).
  2. Dentro del directorio de instalación de MetaTrader 5, encontrará una carpeta llamada "Sounds". Abra esta carpeta.
  3. Copie su archivo de sonido (en formato WAV) en la carpeta "Sounds". Si su archivo de sonido está en un formato diferente (por ejemplo, MP3), deberá convertirlo a formato WAV antes de copiarlo a la carpeta "Sounds".
  4. Una vez que haya copiado el archivo de sonido en la carpeta "Sounds", debería estar disponible para su uso en MetaTrader 5. Puede hacer referencia al archivo de sonido por su nombre de archivo cuando utilice funciones como PlaySound() en su código MQL5.
  5. Activa la reproducción del mensaje de voz mediante la función PlaySound().
  6. Por ejemplo, si ha copiado un archivo de sonido llamado "alert.wav" en la carpeta "Sounds", puede reproducir este archivo de sonido en su código MQL5 de la siguiente manera:

PlaySound("alert.wav");

Reemplace "alert.wav" con el nombre de archivo de su archivo de sonido. Asegúrese de que el nombre del archivo coincida exactamente (incluidas las mayúsculas y minúsculas) para evitar errores al hacer referencia al archivo de sonido en su código MQL5.

¡Eso es todo! Su archivo de sonido ahora debería agregarse correctamente a MetaTrader 5 y estar listo para usar en sus asesores expertos o scripts.

Todas las respuestas producidas por la IA proporcionan formas de abordar las cuestiones planteadas por el proyecto. En lugar de esperar que la IA haga todo el trabajo, lo que generalmente no es preciso, este enfoque metódico es la mejor manera de trabajar con IA en nuestros proyectos. Es fundamental comprender que la inteligencia artificial (IA) no está aquí para reemplazar a los humanos; más bien, puede ayudar y brindar conocimientos que pueden mejorar la experiencia y la creatividad humanas, facilitando el trabajo. Puedes utilizar la IA de esta manera para trabajar con ellos para mejorar su productividad y sus capacidades de resolución de problemas, así como para obtener una mejor comprensión de sus proyectos.

3.1.3. Pruebas iterativas

Ahora podemos entender mejor cómo avanzar con nuestro proyecto gracias a la IA, por lo que el siguiente paso es realizar pruebas y depuración paso a paso. Usar scripts para analizar el rendimiento de su código y encontrar errores o problemas es la forma más efectiva de depurarlo. Puedes aislar problemas con mayor éxito y asegurarte de que todo el programa se ejecute según lo previsto segmentando el código en partes más pequeñas y probando cada una por separado. Probar y depurar el código de forma iterativa es crucial para mejorar su calidad y garantizar su confiabilidad y funcionalidad en situaciones prácticas.

Ahora, por ejemplo, probemos cómo funcionará toda la entrada requerida del usuario:

// Define input variables
input string Alarm1 = "00:00:00"; // Default value for first alarm
input string Alarm2 = "00:00:00"; // Default value for second alarm
input string Alarm3 = "00:00:00"; // Default value for third alarm
input string Sound = "alert.wav"; // Default sound file

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
// Initialization function, executed once when the EA is launched
   return 0; // Return 0 to indicate successful initialization
  }

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
// Deinitialization function, executed before the EA is removed
// Perform any cleanup or necessary actions here

  }

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
// Convert alarm strings to datetime objects
   datetime first_Alarm = StringToTime(Alarm1);
   datetime second_Alarm = StringToTime(Alarm2);
   datetime third_Alarm = StringToTime(Alarm3);

// Get current local time
   datetime Time = TimeLocal();

// Check if current time matches any of the alarm times
   if(first_Alarm == Time || second_Alarm == Time || third_Alarm == Time)
     {
      // Play sound if any alarm time is reached
      PlaySound(Sound);
     }

  }

Explicación:

Este fragmento de código sirve como campo de pruebas para comprender cómo funcionarán las entradas del usuario dentro de nuestro programa. Define las variables de entrada Alarm1, Alarm2, Alarm3 y Sound, que permiten a los usuarios especificar horas de alarma y elegir un sonido. Durante la inicialización, los valores de estas variables se imprimen en la consola, proporcionando una confirmación visual de las entradas del usuario. Las funciones de marcador de posición OnInit() y OnDeinit() se encargan de la inicialización y desinicialización del EA, respectivamente, mientras que OnTick() sirve de marcador de posición para procesar los ticks.

Salida:

Figura 1. Salida de código en MetaTrader 5

Después de confirmar que nuestro código funciona correctamente, podemos proceder a probar otras partes del programa. Por ejemplo, digamos que queremos realizar una prueba usando un script. Un aspecto que podríamos querer probar es la impresión de la hora local. Esta prueba ayudará a garantizar que nuestro programa recupere y muestre con precisión la hora actual, lo cual es crucial para activar las alarmas en los momentos especificados.

Ejemplo:

void OnStart()
  {
// Get the current local time
   datetime localTime = TimeLocal();


// Print the local time to the console
   Print("Current Local Time: ", localTime);
  }

Explicación:

Este fragmento de código define una función OnStart(), que se activa cuando un script comienza a ejecutarse en MQL5. Obtiene la hora local actual mediante la función TimeLocal() y luego imprime esta hora junto con un mensaje descriptivo en la consola mediante la función Print(). Esto permite al desarrollador verificar rápidamente la precisión de la recuperación de tiempo y la funcionalidad de salida durante las pruebas y la depuración.

Con este código hemos probado con éxito nuestra capacidad de recuperar con precisión la hora local de la computadora. Esto garantiza que nuestro programa pueda acceder y utilizar los datos de la hora local de manera eficaz, lo que es esencial para diversas funcionalidades basadas en el tiempo en nuestro proyecto. De manera similar, deberíamos aplicar este método de prueba y depuración al resto de nuestro código, asegurándonos de que cada componente funcione como está previsto antes de integrarlos en el proyecto más grande.

Nuestra capacidad para recuperar con precisión la hora local del ordenador ha sido probada con éxito con este código. Debido a que muchas de las funciones basadas en el tiempo de nuestro proyecto dependen de la capacidad de nuestro programa para acceder y utilizar datos de hora local, esto garantiza que pueda hacerlo. Al asegurarnos de que cada parte funciona como se espera antes de integrarla en el proyecto general, también deberíamos utilizar este enfoque de prueba y depuración para las partes restantes de nuestro código.

Puede pedirle a la IA que integre sus segmentos de código probados en un programa significativo ahora que se ha probado cada paso del código. Sin embargo, puede realizar los ajustes necesarios por su cuenta en ciertas situaciones si no cumple con sus expectativas. Con su orientación y apoyo constantes, la IA ha simplificado su trabajo y le ha ahorrado mucho tiempo.

Respuesta de la IA:

// Define input variables
input string Alarm1 = "00:00:00"; // Default value for first alarm
input string Alarm2 = "00:00:00"; // Default value for second alarm
input string Alarm3 = "00:00:00"; // Default value for third alarm
input string Sound = "alert.wav"; // Default sound file

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
// Initialization function, executed once when the EA is launched
   return 0; // Return 0 to indicate successful initialization
  }

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
// Deinitialization function, executed before the EA is removed
// Perform any cleanup or necessary actions here

  }

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
// Convert alarm strings to datetime objects
   datetime first_Alarm = StringToTime(Alarm1);
   datetime second_Alarm = StringToTime(Alarm2);
   datetime third_Alarm = StringToTime(Alarm3);

// Get current local time
   datetime Time = TimeLocal();

// Check if current time matches any of the alarm times
   if(first_Alarm == Time || second_Alarm == Time || third_Alarm == Time)
     {
      // Play sound if any alarm time is reached
      PlaySound(Sound);
     }

  }

Este bloque define la función OnTick(), que se ejecuta en cada tick del gráfico. Es el corazón de la funcionalidad de EA. Esto es lo que hace:

  • Convierte las cadenas de hora de alarma (Alarm1, Alarm2, Alarm3) en objetos de fecha y hora utilizando la función StringToTime().
  • Obtiene la hora local actual mediante la función TimeLocal() y la almacena en la variable Time.
  • Comprueba si la hora actual coincide con alguna de las horas de alarma. Si es así, reproduce el sonido especificado mediante la función PlaySound().

Este código esencialmente monitorea la hora actual y activa un sonido de alarma cuando se alcanza cualquiera de las horas de alarma especificadas.

Nota: Para editar sus inputs presione el botón F7.


Conclusión

En resumen, este artículo ha brindado una descripción general completa del aprendizaje basado en proyectos para dominar MQL5. Al dividir conceptos complejos en proyectos manejables, los estudiantes pueden profundizar su comprensión y competencia en la programación MQL5. Al utilizar herramientas de inteligencia artificial, pruebas iterativas y pseudocódigo paso a paso, los desarrolladores pueden crear asesores expertos de manera eficiente y mejorar sus estrategias comerciales. Recuerde que aprender MQL5 es una maratón más que un sprint y que adoptar el aprendizaje basado en proyectos es un primer paso esencial en el camino hacia la competencia. Así que no dudes en asumir proyectos, experimentar con código y seguir aprendiendo y creciendo como desarrollador.


Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/articles/14651

Archivos adjuntos |
Alarms.mq5 (2.19 KB)
Factorización de matriсes: un modelado más práctico Factorización de matriсes: un modelado más práctico
Es muy probable que no te hayas dado cuenta de que el modelado de las matrices era un tanto extraño, ya que no se indicaban filas y columnas, solo columnas. Esto resulta muy raro al leer un código que realiza factorizaciones de matrices. Si esperabas ver las filas y columnas indicadas, podrías haberte sentido bastante confundido al intentar implementar la factorización. Además, esa forma de modelar las matrices no es, ni de cerca, la mejor manera. Esto se debe a que, cuando modelamos matrices de esa forma, nos enfrentamos a ciertas limitaciones que nos obligan a usar otras técnicas o funciones que no serían necesarias si el modelado se realiza de manera más adecuada.
DoEasy. Funciones de servicio (Parte 2): Patrón "Barra interior" DoEasy. Funciones de servicio (Parte 2): Patrón "Barra interior"
En este artículo, continuaremos el análisis de los patrones de precios en la biblioteca DoEasy. Así, crearemos la clase de patrón "Barra interior" de las formaciones Price Action.
Red neuronal en la práctica: Mínimos cuadrados Red neuronal en la práctica: Mínimos cuadrados
Aquí en este artículo, veremos algunas cosas, entre ellas: Cómo muchas veces las fórmulas matemáticas parecen más complicadas cuando las miramos, que cuando las implementamos en código. Además de este hecho, también se mostrará cómo puedes ajustar el cuadrante del gráfico, así como un problema curioso que puede suceder en tu código MQL5. Algo que sinceramente no sé cómo explicar, ya que no lo entendí. A pesar de eso, mostraré cómo corregirlo en el código.
Aprenda a operar la brecha de valor justo (Fair Value Gap, FVG) y los desequilibrios paso a paso: Enfoque basado en el concepto de dinero inteligente (Smart Money Concept, SMC) Aprenda a operar la brecha de valor justo (Fair Value Gap, FVG) y los desequilibrios paso a paso: Enfoque basado en el concepto de dinero inteligente (Smart Money Concept, SMC)
Una guía paso a paso para crear e implementar un algoritmo de trading automatizado en MQL5 basado en la estrategia de trading Fair Value Gap (FVG). Un tutorial detallado sobre la creación de un asesor experto que puede ser útil tanto para principiantes como para operadores experimentados.