Tutoriales de programación - página 5

 

Desglose de rango EA mql5 Programación | Parte 4/4


Desglose de rango EA mql5 Programación | Parte 4/4

Toby se complace en anunciar que hoy finalizaremos nuestro asesor experto (EA) de ruptura para MetaTrader 5. Este video marca la parte final de nuestra serie integral sobre el EA de ruptura. Si no ha tenido la oportunidad de ver los videos anteriores, proporcionaré enlaces en la descripción para que pueda ponerse al día.

En los segmentos anteriores, cubrimos aspectos importantes como el cálculo del rango, los controles de ruptura de compra y venta y la lógica de cierre de posición. Ahora, en este video final, tenemos algunas características más para agregar a nuestro EA. Específicamente, incorporaremos una funcionalidad de stop loss y take profit basada en un porcentaje del rango. Además, presentaremos un filtro de día de la semana e implementaremos un modo de ruptura, lo que permitirá a los usuarios cambiar entre una o dos rupturas por rango.

Vamos a sumergirnos en el proceso de codificación. Hasta ahora, este es el código que hemos desarrollado. Nuestra primera tarea es incluir entradas para los porcentajes de stop loss y take profit. Los definiremos como números enteros ya que se representan en porcentajes. Establezcamos la entrada de stop loss predeterminada en 150 y la entrada de toma de ganancias en 200. También actualizaremos los comentarios para reflejar estos cambios. Para garantizar que el usuario proporcione entradas válidas, debemos realizar comprobaciones de entrada. Agregaremos una declaración if adicional en la función on init para validar las entradas de stop loss y take profit. Si la entrada de stop loss es inferior a cero o superior a 1000, mostraremos un mensaje de error. El mismo proceso de validación se aplica a la entrada de toma de ganancias. Estas comprobaciones ayudarán a proteger al EA de entradas erróneas.

Continuando, calculemos los valores de stop loss y take profit para cada posición. Para posiciones de compra, el stop loss se calculará como un porcentaje del rango por debajo del precio actual. Usaremos el precio de oferta y lo multiplicaremos por el valor de stop loss de entrada dividido por 100. Para garantizar un precio normalizado, aplicaremos la función NormalizeDouble. Del mismo modo, para las posiciones de venta, el stop loss se calculará como un porcentaje del rango por encima del precio actual. Usaremos el precio de venta y le agregaremos el valor de stop loss calculado. Esto determinará el nivel apropiado para el stop loss.

Para el cálculo de Take Profit, seguiremos la misma lógica. Para las posiciones de compra, la ganancia será el rango por encima del precio actual, mientras que para las posiciones de venta, será el rango por debajo del precio actual. Con los valores de stop loss y take profit calculados, los incorporaremos en las llamadas de posición abierta. En lugar de utilizar un valor estático de cero, lo reemplazaremos con los valores calculados de stop loss y take profit. Este ajuste garantiza que el EA establezca con precisión los niveles de stop loss y take profit para cada posición.

Para brindar flexibilidad, presentaremos la capacidad de deshabilitar la funcionalidad de stop loss y take profit. Si el usuario ingresa cero para cualquiera de las entradas, indicará que desea desactivar esa función. Agregaremos declaraciones if para verificar estas condiciones y ajustar el cálculo en consecuencia. Ahora, abordemos la característica opcional de hora de cierre. Al ingresar -1 como entrada de tiempo de cierre, el EA solo cerrará posiciones en función de los niveles de stop loss y take profit. Esta modificación permite a los usuarios elegir si desean incluir un tiempo específico para el cierre de la posición o confiar únicamente en los parámetros de stop loss y take profit.

Para implementar esto, actualizaremos la verificación de hora de cierre en la función de activación. Si el tiempo de cierre es inferior a cero, lo que indica que está desactivado, omitiremos la verificación de cierre de posición en función del tiempo y nos basaremos únicamente en las condiciones de stop loss y take profit. Además, haremos ajustes a la visualización del rango en la función de dibujar objetos. Si no hay un tiempo de cierre establecido, las líneas de rango se extenderán hasta la vela actual, lo que indica que el modo de ruptura está activo hasta que se alcancen los niveles de stop loss o take profit. Por otro lado, si se establece una hora de cierre, las líneas de rango solo se extenderán hasta esa vela específica, lo que significa que el modo de ruptura está activo hasta la hora designada.

Para mejorar la versatilidad de EA, presentaremos un filtro de día de la semana. Este filtro permite a los usuarios especificar los días en los que quieren que el EA esté activo. Agregaremos un parámetro de entrada para el filtro de día de la semana, donde el usuario puede seleccionar varios días de una lista predefinida. De forma predeterminada, se seleccionarán todos los días de la semana. Para implementar el filtro de día de la semana, modificaremos la función on tick. Introduciremos una sentencia if para comprobar si el día actual está incluido en el filtro seleccionado por el usuario. Si no se incluye el día, el EA omitirá la lógica de apertura de posición y procederá al siguiente tick.

Finalmente, implementaremos la opción de cambiar entre una o dos rupturas por rango. Actualmente, el EA abre una posición por ruptura de rango. Sin embargo, algunos operadores pueden preferir tener la flexibilidad de abrir dos posiciones para rupturas más fuertes. Para adaptarse a esto, introduciremos un parámetro de entrada que permita al usuario seleccionar uno o dos desgloses por rango.

Para implementar esta característica, ajustaremos la lógica de apertura de posición. Si el usuario selecciona dos rupturas por rango, el EA abrirá una posición adicional en la dirección opuesta a la ruptura inicial. De esta manera, se puede capturar tanto una ruptura alcista como una bajista dentro del mismo rango. Con todas estas nuevas características implementadas, nuestro asesor experto en rupturas brindará a los operadores una funcionalidad y flexibilidad mejoradas. La funcionalidad de stop loss y take profit basada en un porcentaje del rango ayudará a administrar el riesgo y capturar ganancias. El filtro de día de la semana permitirá a los usuarios especificar los días de negociación activos, mientras que el modo de ruptura se puede adaptar a una o dos rupturas por rango, según su estrategia de negociación.

Esperamos que esta serie completa sobre el asesor experto en rupturas le haya resultado útil e informativa. Si tiene alguna pregunta o necesita más ayuda, no dude en comunicarse. ¡Feliz comercio!

Range Breakout EA mql5 Programming | Part 4/4
Range Breakout EA mql5 Programming | Part 4/4
  • 2022.10.14
  • www.youtube.com
I will show you how to code a Time Range Breakout EA for Metatrader 5. If you are new to mql5, just follow my steps and we will create a time range breakout...
 

Bandas de Bollinger Programación EA MT5



Bandas de Bollinger Programación EA MT5

En este video, Toby presenta un proceso paso a paso para crear un asesor experto personalizado para un evento de bolos en Twitter. Comienza explicando la estrategia: vender cuando una vela se abre por encima de la banda superior de Bollinger, establecer niveles de stop loss y take profit, y salir de la operación si se cruza la línea media de las Bandas de Bollinger. La misma lógica se aplica para comprar.

Luego, Toby cambia a MetaEditor, donde crea un nuevo asesor experto usando una plantilla. Limpia la plantilla y agrega parámetros de entrada para el EA, como el número mágico, el tamaño del lote, el período, la desviación, el stop loss y la toma de ganancias. Establece valores predeterminados para estos parámetros y compila el código.

A continuación, Toby define las variables globales para el asesor experto, incluido el identificador del indicador de la banda de Bollinger y los búferes para las bandas superior, media e inferior. También crea variables para el tick actual y el comercio.

Pasando a la función OnInit, Toby verifica si las entradas del usuario son válidas. Si alguna de las entradas no es válida, muestra un mensaje de error y regresa. Establece el número mágico para el objeto comercial y crea el identificador del indicador para el indicador de la banda de Bollinger. Si falla la creación del identificador, muestra un mensaje de error y regresa. Luego establece los búferes como series y compila el código.

En la función OnTick, Toby comprueba si el tick actual es un tick de barra abierta mediante una función personalizada. Si no es un tick de barra abierta, regresa. Si es un tick de barra abierta, recupera el tick actual usando la función SymbolInfoTick y lo almacena en la variable currentTick. Luego recupera los últimos valores del indicador utilizando la función CopyBuffer y los almacena en los respectivos búferes. Si el número de valores copiados no es igual a 3, lo que indica un error, muestra un mensaje de error y regresa.

En este punto, Toby ha completado los pasos iniciales de codificación del asesor experto. Compila el código y utiliza una prueba retrospectiva visual en MetaTrader para verificar los valores del indicador y asegurarse de que el código funcione correctamente.

A continuación, debemos implementar la lógica para generar señales comerciales basadas en la estrategia de las Bandas de Bollinger. Comenzaremos comprobando si una vela se abre por encima de la banda superior, lo que indica una señal de venta. Si se cumple esta condición, ejecutaremos una operación de venta con un nivel de stop loss y take profit. Del mismo modo, comprobaremos si una vela se abre por debajo de la banda inferior para una señal de compra, ejecutando una operación de compra con las mismas condiciones de salida.

Aquí está la explicación del código:

  • Primero verificamos si el tick actual es un tick de barra abierta usando la función isNewBar(). Si devuelve falso, omitimos la generación de señales comerciales para el tick actual.

  • Luego recuperamos los últimos valores del indicador: upperBand, baseLine y lowerBand de los búfer respectivos.

  • A continuación, comprobamos si el precio de apertura de la vela anterior está por encima de la banda superior (open[1] > upperBand). Si esta condición es verdadera, generamos una señal de venta abriendo una operación de venta utilizando el método Sell() del objeto comercial. Establecemos el tamaño del lote, el stop loss y los niveles de toma de ganancias utilizando los métodos respectivos.

  • Del mismo modo, comprobamos si el precio de apertura de la vela anterior está por debajo de la banda inferior (open[1] < lowerBand). Si es verdadero, generamos una señal de compra abriendo una operación de compra usando el método Buy() del objeto comercial. Una vez más, establecemos el tamaño del lote, los niveles de stop loss y take profit.

  • Finalmente, si hay una operación abierta, verificamos si el precio de cierre de la vela actual cruza la línea media (línea base). Si esta condición es verdadera, cerramos la operación utilizando el método Close() del objeto comercial.

Recuerde compilar el código y probarlo en MetaTrader para asegurarse de que funciona como se espera.

En el código dado, se están realizando varias tareas. Aquí hay una explicación detallada de cada paso:

  1. Inicializar variables:

    • Establezca el recuento de posiciones de compra y posiciones de venta en cero.
    • Establece la celda actual en cero.
  2. Contar posiciones abiertas:

    • Recorra todas las posiciones actualmente abiertas.
    • Consigue el ticket de cada posición y comprueba si la operación es exitosa.
    • Si tiene éxito, obtenga el número mágico de la posición.
    • Si el número mágico coincide con el número mágico ingresado, incremente el contador respectivo para las posiciones de compra o venta.
  3. Compruebe si se puede abrir una nueva posición:

    • Compruebe si no hay posiciones de compra abiertas.
    • Compruebe si el precio actual es inferior o igual al búfer inferior de las Bandas de Bollinger.
    • Compruebe si el tiempo de apertura de la posición de compra es diferente del tiempo de apertura de la barra actual.
  4. Calcule el stop loss y el take profit:

    • Calcule el stop loss restando el stop loss de entrada (en puntos) del precio actual.
    • Calcule el Take Profit sumando el Take Profit de entrada (en puntos) al precio actual.
    • Si la toma de ganancias de entrada es cero, establezca la variable de toma de ganancias en cero.
  5. Normalice el stop loss y el take profit:

    • Defina una función para normalizar el stop loss y el take profit en función del tamaño del tick.
    • Obtenga el tamaño de tick para el símbolo actual.
    • Normalice los valores de stop loss y take profit dividiéndolos por el tamaño del tick.
  6. Abra una nueva posición de compra:

    • Utilice el objeto comercial para abrir una posición de compra con los parámetros especificados, incluido el stop loss normalizado y la toma de ganancias.
  7. Verifique el cruce de la banda superior para abrir una posición de venta:

    • Compruebe si no hay posiciones de venta abiertas.
    • Compruebe si el precio actual es superior o igual al búfer superior de las Bandas de Bollinger.
    • Compruebe si el tiempo de apertura de la posición de venta es diferente del tiempo de apertura de la barra actual.
    • Calcule el stop loss y el take profit para la posición de venta utilizando el precio de oferta actual.
    • Normalice los valores de stop loss y take profit.
    • Abra una posición de venta con los parámetros especificados, incluido el stop loss normalizado y la toma de ganancias.
  8. Cerrar posiciones si se cruza la línea media de las Bandas de Bollinger:

    • Cuente las posiciones abiertas de compra y venta.
    • Si el recuento de posiciones de compra es mayor que cero y el precio de oferta actual está por encima del búfer superior, cierre todas las posiciones de compra.
    • Si el recuento de posiciones de venta es mayor que cero y el precio de venta actual es inferior o igual al búfer inferior, cierre todas las posiciones de venta.
  9. Defina la función para cerrar posiciones:

    • Copie el código existente para contar posiciones abiertas y modifíquelo para cerrar posiciones según el parámetro de entrada (0 para todas las posiciones, 1 para posiciones de compra, 2 para posiciones de venta).

El código realiza varias comprobaciones y cálculos para contar y gestionar posiciones abiertas, abrir nuevas posiciones y cerrar posiciones en función de condiciones específicas.

Bollinger bands EA MT5 Programming
Bollinger bands EA MT5 Programming
  • 2022.11.28
  • www.youtube.com
Today I will show you how to code a simple Bollinger bands EA for Metatrader 5. If you are new to mql5, just follow my steps and we will create a fully work...
 

Cómo crear un panel gráfico en mql5 | parte 1/2


Cómo crear un panel gráfico en mql5 | parte 1/2

Toby demostrará cómo crear un panel gráfico simple en MQL5 para mostrar información y agregar un botón para cambiar el color de fondo del gráfico. Menciona que este panel se puede crear para cualquier asesor experto, pero usará el EA de desglose de rango de tiempo como ejemplo. Toby afirma que un usuario solicitó el tema del video en los comentarios y alienta a los espectadores a sugerir temas para futuros videos.

Toby abre el Meta Editor y carga el archivo para el EA de desglose de rango de tiempo. Lo guarda como un nuevo asesor experto llamado "panel de EA de rango de tiempo" y lo compila. Explica que escribirá el panel como una clase separada en un archivo de inclusión, lo que facilita su uso en cualquier asesor experto. Toby crea un nuevo archivo de inclusión denominado "panel gráfico" y define las entradas para el tamaño del panel, el tamaño de fuente y el color de fuente.

Incluye el archivo "dialog.mqh" de la carpeta de controles, que le permitirá utilizar las funciones de esa clase. Toby define una clase llamada "CGraphicalPanel" que hereda de la clase "CAppDialog". Agrega una sección privada para los métodos de la clase, una sección pública para el constructor, el destructor, la función de inicialización y el controlador de eventos del gráfico. También incluye una sección de comentarios para los métodos de clase.

A continuación, Toby escribe el cuerpo de los métodos de clase después de la definición de clase. Especifica que los métodos pertenecen a la clase y escribe el constructor, el destructor, la función de inicialización y el controlador de eventos del gráfico. Agrega comentarios para describir el propósito de cada método. Toby compila el código para comprobar si hay errores o advertencias.

Toby implementa la función de crear panel, que crea un panel de diálogo utilizando la clase CFDialog. Establece el nombre, la subventana, la posición y el tamaño del panel en función de los parámetros de entrada. Si la creación del panel falla, imprime un mensaje y devuelve falso. También agrega una función de actualización de gráfico para actualizar el gráfico. Toby vuelve a compilar el código para asegurarse de que esté libre de errores.

En el archivo del asesor experto, Toby incluye el archivo de inclusión del panel gráfico y crea un objeto de la clase del panel denominado "panel" en la sección de variables globales. Inicializa el panel en la función onInit y agrega un controlador de eventos de gráfico para pasar los eventos del gráfico al panel. Toby escribe el cuerpo del controlador de eventos del gráfico, llamando a la función de eventos del gráfico del panel con los parámetros apropiados.

Finalmente, Toby agrega una función de destrucción de panel a la función onDeinit, que destruye el panel y especifica el motivo. Compila el código de nuevo y lo prueba en MetaTrader. Toby demuestra cómo arrastrar y soltar al asesor experto en el gráfico, mostrando la funcionalidad del panel. También cierra el asesor experto con el botón del panel.

Hola, soy Toby y hoy les mostraré cómo crear un panel gráfico en MQL5. Esta es en realidad la segunda parte del tutorial. En la primera parte, creamos un panel simple en el lado izquierdo, y si te lo perdiste, puedes encontrar el enlace en la descripción. En el video de hoy, agregaremos algunas etiquetas y un botón al panel. Para este ejemplo, usaremos el EA de desglose de rango de tiempo. Si está interesado en aprender a codificar este asesor experto, tengo una serie de codificación en mi canal. También puede encontrar el enlace a la primera parte en la descripción.

Para comenzar, cambiemos al editor MQL5 y comencemos a codificar. Tenemos nuestro archivo de inclusión del panel gráfico aquí, y también tenemos el EA de desglose del rango de tiempo, que modificamos para mostrar el panel. Vayamos al archivo de inclusión y verifiquemos los valores de entrada del usuario. Crearemos un método llamado "comprobar entradas" en la sección de métodos privados de nuestra clase. Después de la función OnInit, llamaremos a este método. Si el método devuelve falso, también devolveremos falso desde la función OnInit. De esta manera, si las entradas no son válidas, no continuaremos. Vamos a compilar y seguir adelante.

Ahora, comencemos a agregar etiquetas al panel. Necesitamos incluir los archivos de clase necesarios para etiquetas y botones. Iremos a la sección de inclusión e incluiremos "controls/label.mqh" para etiquetas y "controls/button.mqh" para botones. Después de eso, definiremos nuestras variables de etiqueta. Tendremos etiquetas para entradas, número mágico, lotes, hora de inicio, duración y hora de cierre. Vamos a compilar y seguir adelante.

En la función createPanel, agregaremos las etiquetas al panel. Crearemos la etiqueta de entrada usando la variable "M_L_Input". Estableceremos el texto, el color y el tamaño de fuente para la etiqueta. Luego, pegaremos la etiqueta al panel. Repetiremos este proceso para las otras etiquetas también. Una vez que hayamos agregado todas las etiquetas, compilaremos y verificaremos el panel del lado izquierdo. Es posible que necesitemos ajustar las posiciones de las etiquetas para una mejor alineación. Vamos a compilar y comprobar.

Ahora, agreguemos el botón al panel. Definiremos una variable "M_B_ChangeColor" de tipo "CButton". Estableceremos la posición, el texto, el color del texto, el color de fondo y el tamaño de fuente para el botón. Finalmente, agregaremos el botón al panel. Después de compilar, veremos el botón en el panel. En esta etapa, el botón no tiene ninguna funcionalidad, pero lo agregaremos más adelante.

A continuación, cambiemos el color de fondo y el nombre de fuente del panel. Para hacer esto, incluiremos el archivo "Defiance.mqh" y definiremos nuevos valores para la configuración predeterminada. Desdefiniremos el nombre de fuente predeterminado y la configuración de color de fondo, y luego definiremos nuevos valores para ellos. Usaremos el nombre de fuente "Consolas" y un color de fondo gris oscuro. Después de compilar, veremos el panel actualizado con el nuevo color de fondo y fuente.

Finalmente, mostremos los valores reales del asesor experto en el panel. Incluiremos el archivo del asesor experto en nuestro archivo de inclusión y accederemos a las variables de entrada. Actualizaremos las etiquetas con los valores reales del asesor experto. Después de compilar, veremos los valores de entrada que se muestran en el panel.

Eso es todo por el tutorial de hoy sobre la creación de un panel gráfico en MQL5. En la siguiente parte, agregaremos funcionalidad al botón y completaremos el panel. ¡Mantente sintonizado para más!

How to create a graphical panel in mql5 | Part 1/2
How to create a graphical panel in mql5 | Part 1/2
  • 2022.12.04
  • www.youtube.com
Today I will show you how to code a simple graphical panel for Metatrader 5. If you are new to mql5, just follow my steps and we will create a fully working...
 

Cómo crear un panel gráfico en mql5 | Parte 2/2


Cómo crear un panel gráfico en mql5 | Parte 2/2

Hola, este es Toby. Hoy les mostraré cómo crear un panel gráfico en MQL5. Esta es la segunda parte de la serie de tutoriales. En la primera parte, creamos un panel simple en el lado izquierdo. Si te lo perdiste, te lo enlazo aquí. En el video de hoy, agregaremos etiquetas y un botón al panel. Para este ejemplo, usaremos el EA de desglose de rango de tiempo. Si quieres aprender a codificar este asesor experto, tengo una serie de codificación en mi canal. Voy a vincular la primera parte aquí también.

Pasemos al editor de medios y comencemos a codificar. Tenemos nuestro archivo de inclusión de panel gráfico y el archivo EA de desglose de rango de tiempo modificado, que muestra el panel. En el archivo de inclusión, crearemos un método llamado "checkInputs" para validar los valores de entrada del usuario. Llamaremos a este método antes de crear el panel en la función OnInit. Si alguna de las entradas no es válida, mostraremos un mensaje de error y devolveremos falso. De lo contrario, procederemos a crear el panel.

A continuación, agregaremos etiquetas y un botón al panel. Para usar etiquetas y botones, debemos incluir sus archivos de clase. Agregaremos las instrucciones include necesarias para etiquetas y botones en la clase. Luego, definiremos variables privadas para las etiquetas y el botón.

En la función CreatePanel, después de crear el panel, agregaremos las etiquetas y el botón al panel. Estableceremos sus posiciones, texto, color y tamaño de fuente. Finalmente, los agregaremos al panel usando el método Agregar.

Compilaremos el código y comprobaremos el panel. Las etiquetas y el botón deben mostrarse en el panel. También cambiaremos el color de fondo y el nombre de fuente del panel para una mejor apariencia. Para mostrar los valores reales del asesor experto en el panel, incluiremos el archivo del asesor experto en la sección de inclusión. Luego, en la función CreatePanel, recuperaremos los valores de entrada del asesor experto y los mostraremos en las etiquetas. Compilaremos el código y comprobaremos el panel de nuevo. Las etiquetas ahora deberían mostrar los valores de entrada reales del asesor experto. Repetiremos este proceso para todos los valores de entrada.

Una vez que completemos estos pasos, el panel gráfico con etiquetas y un botón estará listo. Ahora podemos proceder a agregar los valores para las etiquetas restantes en el panel. Haremos esto de la misma manera que hicimos con la etiqueta del número mágico. Volvamos a nuestro archivo de inclusión y ubiquemos la sección donde creamos las etiquetas. Aquí, agregaremos el código para mostrar los valores de los lotes, la hora de inicio, la duración y la hora de cierre.

Para la etiqueta de lotes, reemplazaremos el texto "número mágico" con "lotes" y actualizaremos la coordenada y a 70. Para la etiqueta de hora de inicio, cambiaremos el nombre a "hora de inicio" y actualizaremos la y- coordenada a 90. Para la etiqueta de duración, cambiaremos el nombre a "duración" y actualizaremos la coordenada y a 110. Por último, para la etiqueta de hora de cierre, cambiaremos el nombre a "hora de cierre" y actualizaremos la coordenada y a 130.

Después de hacer estos cambios, podemos compilar el código.

Ahora, si echamos un vistazo a nuestro asesor experto y lo compilamos, deberíamos poder ver los valores reales de los lotes, la hora de inicio, la duración y la hora de cierre en el panel. A continuación, implementemos la funcionalidad del botón. Actualmente, cuando hacemos clic en el botón, no realiza ninguna acción. Cambiemos eso. En nuestro archivo de inclusión, ubicaremos la sección donde creamos el botón. Aquí, podemos agregar un controlador de eventos para el clic del botón. Usaremos la función OnChartEvent para este propósito. Dentro del controlador de eventos, podemos especificar la acción que queremos realizar cuando se hace clic en el botón.

Por ahora, mostremos un mensaje cuando se haga clic en el botón. Podemos usar la función Imprimir para enviar un mensaje a la terminal. Después de agregar el controlador de eventos, podemos compilar el código.

Ahora, si ejecutamos el asesor experto y hacemos clic en el botón, deberíamos ver el mensaje que se muestra en la terminal.

¡Eso es todo! Hemos creado con éxito un panel gráfico en MQL5 con etiquetas y un botón. Las etiquetas muestran los valores de entrada del asesor experto y el botón tiene un controlador de eventos de clic.

Siéntase libre de agregar más funciones al botón o personalizar el panel según sus requisitos. Recuerde compilar tanto el archivo de inclusión como el archivo del asesor experto para que los cambios surtan efecto.

How to create a graphical panel in mql5 | Part 2/2
How to create a graphical panel in mql5 | Part 2/2
  • 2022.12.12
  • www.youtube.com
Today I will show you how to code a simple graphical panel for Metatrader 5. If you are new to mql5, just follow my steps and we will create a fully working...
 

Dimensionamiento de posición dinámica en mql5 | programación MT5



Dimensionamiento de posición dinámica en mql5 | programación MT5

Hola, este es Toby. Hoy, le mostraré cómo calcular el tamaño de lote dinámico en MQL5 para que pueda lograr resultados como el que se muestra aquí. Puedes probarlo por ti mismo.

Muy bien, comencemos. En este video, agregaremos un cálculo de tamaño de lote dinámico a una estrategia que actualmente usa un tamaño de lote fijo. Esto nos permitirá arriesgar una cantidad específica por operación, como $100 o un porcentaje del saldo de la cuenta. Además, realizaremos una prueba retrospectiva para determinar si la estrategia se puede mejorar aún más con el cálculo dinámico del tamaño del lote. También lo guiaré a través de la estrategia y su configuración.

Para comenzar, cambiemos a MetaEditor y comencemos a codificar. Aquí estamos en MetaEditor, y para esta demostración, usaré el 'EA de rango de tiempo' para incorporar el cálculo dinámico del tamaño del lote. Sin embargo, puede utilizar cualquier otro asesor experto de su elección. Hemos codificado previamente este EA en una serie en nuestro canal. Si desea utilizar el mismo asesor experto, le proporcionaré un enlace a la primera parte.

Primero, abramos el archivo 'Time Range EA'. Ahora, guardémoslo con un nuevo nombre. Haga clic en 'Guardar como' y asígnele el nombre 'Rango de tiempo EA Dynamic Lots'. Genial, el archivo ha sido guardado.

Este asesor experto es donde agregaremos el cálculo dinámico del tamaño del lote. Compilemos el archivo y examinemos las entradas en el probador de estrategias. Abra el probador de estrategias en la plataforma MetaTrader 5 y, si es necesario, actualice los asesores expertos. Ahora, seleccione 'Rango de tiempo de lotes dinámicos de EA'. En la pestaña Entradas, verá la entrada 'Tamaño del lote', que actualmente acepta un valor fijo. Necesitamos modificar esto para que podamos ingresar valores para arriesgar $ 100 por operación o un porcentaje del saldo de la cuenta.

Volviendo a MetaEditor, agregaremos una entrada de tamaño de lote dinámico en la sección 'entrada'. Cree un espacio después del 'Número mágico' y defina una enumeración (enumeración) llamada 'Enumeración de modo de lote'. Esta enumeración tendrá tres opciones: 'Fijo', 'Dinero' y 'Porcentaje de la cuenta'. Esto nos permitirá elegir el modo de lote deseado fácilmente. Proporcione comentarios para cada opción para mejorar la legibilidad.

A continuación, usaremos esta enumeración como entrada. Defina una 'entrada' con el tipo como nuestra 'Enumeración de modo de lote' y asígnele el nombre 'Modo de lote de entrada', por ejemplo. Establezca el valor predeterminado en 'Modo de lote fijo' y agregue un comentario para describir el propósito de esta entrada.

Compile el código y compruebe cómo aparece en el probador de estrategias. Verá el menú desplegable 'Modo de lote', que le permite seleccionar entre 'Fijo', 'Lote basado en dinero' y 'Lote basado en porcentaje de la cuenta'.

Ahora, modifiquemos la entrada 'Tamaño del lote' para acomodar diferentes valores según el modo de lote seleccionado. Cambie el tipo de entrada a 'doble' y modifique el comentario para reflejar las opciones: 'Lote/Dinero/Porcentaje'. Vuelva a compilar el código y verifique el probador de estrategias para asegurarse de que se reflejen los cambios.

Para validar la entrada del usuario, modificaremos la función 'CheckInput'. Agregue controles para cada opción de modo de lote para asegurarse de que la entrada esté dentro del rango aceptable. Para el modo de lote 'Fijo', el tamaño del lote debe estar por encima de cero y no exceder un cierto límite (por ejemplo, 10 lotes). Muestra un mensaje de error apropiado si no se cumplen estas condiciones. Repita este proceso para los modos de lote 'Dinero' y 'Porcentaje de la cuenta', ajustando los límites en consecuencia. Además, si se selecciona cualquiera de estos dos modos de lote, deberemos verificar si el stop loss está activo.

Un resumen conciso de los pasos necesarios para implementar el cálculo dinámico del tamaño del lote en MQL5:

  1. Determine los tamaños de lote mínimo y máximo permitidos para su estrategia comercial.
  2. Defina el tamaño de paso de lote deseado, que representa el incremento por el cual los lotes pueden cambiar.
  3. Calcule la distancia de stop loss para la operación.
  4. Utilice la distancia de stop loss para calcular el tamaño del lote inicial.
  5. Compruebe si el tamaño del lote calculado está por debajo del valor mínimo permitido y ajústelo si es necesario.
  6. Verifique si el tamaño de lote calculado excede el valor máximo permitido y ajústelo si es necesario.
  7. Compruebe si el tamaño de lote calculado es un tamaño de paso válido y ajústelo al tamaño de paso válido más cercano si es necesario.
  8. Devuelve el tamaño final del lote calculado.
  9. Utilice el tamaño de lote calculado para abrir la operación.

Al seguir estos pasos, puede asegurarse de que el tamaño de su lote se calcule dinámicamente en función del riesgo deseado por operación y las limitaciones de su estrategia comercial.

Dynamic position sizing in mql5 | MT5 programming
Dynamic position sizing in mql5 | MT5 programming
  • 2022.12.18
  • www.youtube.com
Today I will show you how to code dynamic position sizing for Metatrader 5 in mql5. We create two functions to calculate a dynamic position size for any Expe...
 

Stop loss dinámico en mql5 | programación MT5



Stop loss dinámico en mql5 | programación MT5

Hoy, lo guiaré paso a paso sobre cómo agregar un stop loss de entrenamiento a cualquier asesor experto en MQL5. Al final de este video, también realizaremos una prueba retrospectiva para evaluar si nuestra estrategia se puede mejorar con un stop loss comercial. Entonces empecemos.

Antes de comenzar a codificar, comprendamos el concepto básico de un stop loss comercial. Imagina que entramos en una posición a un precio específico. Inicialmente, nuestro stop loss se establece en un cierto nivel. A medida que el precio se mueve a nuestro favor, arrastramos el stop loss detrás del precio, manteniendo siempre la misma distancia. Si el precio retrocede, el stop loss permanece en su lugar. A medida que el precio continúa moviéndose en nuestra dirección, continuamos rezagando nuestro límite de pérdidas. Eventualmente, el precio puede revertirse, lo que lleva a que nuestra posición se detenga. La idea principal es beneficiarse de las tendencias significativas del mercado y salir de la posición cuando finalice la tendencia.

Ahora, cambiemos a MetaEditor para comenzar a codificar. Puede usar cualquier asesor experto para este propósito, pero para este video, usaremos la "Línea de tiempo GA" con tamaño de lote dinámico, que codificamos en el video anterior. Abra el archivo y guárdelo como un nuevo asesor experto llamado "Stop Loss". Compile el código para asegurarse de que todo esté libre de errores.

Para agregar un stop loss comercial a nuestro asesor experto, debemos seguir algunos pasos. Primero, agreguemos una entrada adicional para el stop loss dinámico. Dentro de la sección de entrada, agregue una variable de entrada booleana llamada "EnableTrailingStopLoss" y establezca su valor predeterminado en "falso". Esta entrada nos permitirá activar o desactivar el stop loss de negociación. Compile el código para incorporar los cambios.

Ahora, vuelva a la plataforma MetaTrader y abra el Probador de estrategias. Seleccione nuestro asesor experto "Lotes dinámicos con Trailing Stop Loss". En la pestaña de entrada, encontrará la entrada recién agregada "EnableTrailingStopLoss". Cámbielo de "falso" a "verdadero" para activar el stop loss comercial.

A continuación, escribamos la función que actualizará nuestro stop loss. Colocaremos esta función antes de la función "ClosePosition". Dentro de la función, primero, verifique si hemos habilitado el stop loss comercial y si existe un stop loss para la posición. Si no, no hay necesidad de continuar, así que regrese de la función.

Ahora, repasemos todas las posiciones abiertas. Para cada puesto, comprobaremos si pertenece a nuestro asesor experto. Recupere el tipo de posición (compra o venta), el stop loss actual y los valores de obtención de beneficios. Calcule el nuevo stop loss en función del precio actual y el rango del símbolo, multiplicado por el porcentaje de stop loss definido por el usuario. Ajuste el stop loss según el tipo de posición.

Antes de modificar la posición con el nuevo stop loss, debemos realizar algunas comprobaciones. Primero, asegúrese de que el nuevo stop loss sea diferente del stop loss actual para evitar errores. Además, algunos corredores imponen un nivel de stop, lo que evita establecer el stop loss demasiado cerca del precio actual. Compruebe si el nuevo stop loss se adhiere al nivel de stop, y si no, continúe a la siguiente posición.

Finalmente, modifique la posición con el nuevo stop loss y el valor actual de toma de ganancias. Si la modificación falla, imprima un mensaje de error que indique el problema encontrado. Regrese de la función para evitar procesar más posiciones.

Compile el código para asegurarse de que no haya errores ni advertencias. Ahora, la función de actualización de stop loss está completa.

Para integrar esta función en nuestro asesor experto, debemos llamarla dentro de la función "OnTick". Realice la llamada de función después de verificar si hay rupturas. Esto asegura que el stop loss se actualice para cada tick recibido.

Compile el código por última vez para confirmar los cambios. Ahora, nuestro asesor experto tiene la capacidad de rastrear el stop loss en función de los parámetros definidos por el usuario. Hemos agregado la variable de entrada para habilitar o deshabilitar la función de stop loss dinámico y hemos implementado la función para actualizar el stop loss para las posiciones abiertas.

Ahora, procedamos a realizar una prueba retrospectiva de nuestro asesor experto para evaluar la efectividad del stop loss comercial. En la plataforma MetaTrader, abra el Probador de estrategias y seleccione nuestro asesor experto "Stop Loss" para realizar la prueba. Elija el símbolo deseado y el marco de tiempo para la prueba.

En la pestaña Entradas, encontrará varios parámetros para configurar, incluido el porcentaje de stop loss dinámico y el tamaño del lote. Ajuste estos parámetros de acuerdo con sus preferencias y estrategia comercial.

Haga clic en el botón Iniciar para comenzar el backtest. El asesor experto ejecutará operaciones en función de los parámetros especificados, y el stop loss se ajustará dinámicamente a medida que el precio se mueva a nuestro favor.

Una vez que se completa el backtest, puede revisar los resultados en las pestañas Resultados y Gráfico. Preste atención a las pérdidas y ganancias, la reducción y otras métricas de rendimiento para evaluar el impacto del stop loss dinámico en la estrategia.

Si los resultados del backtest son satisfactorios, puede considerar utilizar el asesor experto con el stop loss de operaciones en su cuenta de operaciones real. Sin embargo, es crucial evaluar a fondo el rendimiento de la estrategia y realizar más pruebas u optimización antes de tomar cualquier decisión comercial.

En conclusión, hemos agregado con éxito un stop loss comercial a nuestro asesor experto utilizando MQL5. Al rastrear el stop loss detrás del precio, nuestro objetivo es maximizar las ganancias durante las tendencias favorables del mercado y minimizar las pérdidas cuando la tendencia se invierte. Recuerde probar a fondo cualquier modificación o estrategia antes de aplicarlas a las cuentas comerciales reales.

Tenga en cuenta que esta es una guía general, y es esencial tener una buena comprensión de los principios comerciales y de programación antes de implementar dichos cambios. Siempre tenga cuidado y considere consultar con un asesor financiero profesional si es necesario.

Trailing stop loss in mql5 | MT5 programming
Trailing stop loss in mql5 | MT5 programming
  • 2022.12.31
  • www.youtube.com
Today I will show you how to code a trailing stop loss in mql5. You can use the same function to add a trailing stop loss to any other Expert Advisor for Met...
 

Codifique un RSI EA simple en mql5 | Programación MT5



Codifique un RSI EA simple en mql5 | Programación MT5

En este tutorial, Toby se presenta y explica el objetivo del tutorial, que es demostrar cómo codificar un Asesor Experto (EA) simple usando el MetaEditor. El EA utilizará el indicador RSI para generar señales de compra y venta basadas en condiciones de sobreventa y sobrecompra. Toby también menciona que se incluirán en el EA un stop loss, un take profit y una opción para salir de operaciones en una señal inversa.

Toby comienza creando un nuevo archivo EA en MetaEditor y limpia el código existente. Luego define los parámetros de entrada para el EA, como el número mágico, el tamaño del lote, el período RSI, el nivel RSI, el stop loss, el take profit y la opción de cerrar operaciones con una señal inversa. Asigna valores predeterminados a estos parámetros de entrada y agrega comentarios para describir cada uno.

Después de definir los parámetros de entrada, Toby pasa a crear la sección de variables globales. Declara variables para el identificador del indicador RSI, un búfer para almacenar valores RSI, una variable de tipo tick para almacenar el tick actual, un objeto comercial para abrir y cerrar posiciones y dos variables de fecha y hora para garantizar que solo se abra una operación por barra. También incluye la directiva #include necesaria para acceder a la clase CTrade.

A continuación, Toby implementa la validación de parámetros de entrada en la función OnInit(). Comprueba si cada parámetro de entrada cumple con los criterios especificados y muestra un mensaje de error si alguna entrada no es válida. Utiliza la función Alert() para imprimir los mensajes de error y regresa de la función OnInit() si se encuentra un error.

Además de la validación de entrada, Toby establece el número mágico para el objeto comercial y crea el identificador del indicador RSI. Comprueba si la creación del identificador fue exitosa y muestra un mensaje de error si falla. También establece la serie para el búfer RSI para simplificar el trabajo con los valores.

En la función OnDeinit(), Toby libera el indicador RSI utilizando la función IndicatorRelease() para liberar recursos.

Pasando a la función OnTick(), Toby comienza obteniendo el tick actual usando la función SymbolInfoTick(). Comprueba si la recuperación del tick fue exitosa y muestra un mensaje de error si falla. Asigna los precios de compra y venta del tick actual a la variable global currentTick para uso futuro.

A continuación, Toby recupera los valores del indicador RSI utilizando la función CopyBuffer(). Asigna los valores a una variable llamada rsiValues y verifica si la recuperación fue exitosa. Almacena los dos valores RSI en el búfer para su posterior análisis.

Con los datos necesarios recuperados, Toby ahora puede proceder a implementar la lógica comercial en la función OnTick(). Sin embargo, el código proporcionado en el texto está cortado y faltan los detalles restantes.

El tutorial cubre la configuración inicial del EA, incluida la definición de parámetros de entrada, la validación de entrada, la declaración de variables globales, el manejo del indicador RSI y la recuperación de ticks actuales. El tutorial sienta las bases para implementar la lógica comercial en los pasos posteriores.

Code a simple RSI EA in mql5 | MT5 Programming
Code a simple RSI EA in mql5 | MT5 Programming
  • 2023.01.08
  • www.youtube.com
Today I will show you how to code a simple RSI EA for Metatrader 5. If you are new to mql5, just follow my steps and we will create a fully working RSI Expe...
 

¡Increíble robot comercial RSI en mql5! | programación MT5



¡Increíble robot comercial RSI en mql5! | programación MT5

Hola, soy Toby y hoy te mostraré cómo codificar una estrategia con una tasa de ganancias del 100 %. En este tutorial, modificaremos un Asesor Experto (EA) existente y agregaremos un filtro al indicador RSI. Te guiaré a través del proceso de codificación paso a paso. ¡Empecemos!

Paso 1: Configuración de la estrategia Estaremos trabajando en el MetaEditor. Abra el EA que creamos en el video anterior. Si aún no lo has visto, te lo enlazo para que te pongas al día. Guarde el archivo con un nuevo nombre, como "RSI_MA_Filter_EA".

Paso 2: Modificación de las entradas Para implementar el filtro, necesitamos agregar una entrada de período de promedio móvil. También incluiremos una entrada para el marco de tiempo en el que se ejecuta el promedio móvil. Mantendremos las entradas de stop loss, take profit y señales opuestas como están.

Paso 3: Ajuste de variables globales En la sección de variables globales, debemos cambiar el nombre del controlador y el búfer del indicador RSI para diferenciarlos del promedio móvil. Agregaremos un identificador y un búfer para el promedio móvil. Además, podemos eliminar variables innecesarias relacionadas con la compra de tiempo abierto y la venta de tiempo abierto.

Paso 4: Realizar cambios en la función onInit En la función onInit, agregaremos una verificación para la entrada del período de promedio móvil. También modificaremos el identificador RSI para usar el precio de apertura en lugar del precio de cierre. Luego, crearemos el identificador y el búfer para el indicador de promedio móvil.

Paso 5: Actualización de la función de desmarcar Dentro de la función de desmarcar, primero verificaremos si la marca actual es una nueva marca de barra abierta. Si no, volvemos y esperamos el siguiente tick de apertura de barra. Agregaremos una función personalizada para realizar esta verificación. Luego, recuperaremos los valores de la media móvil y los almacenaremos en el búfer. También ajustaremos las condiciones para abrir posiciones de compra y venta para incluir el filtro de promedio móvil.

Paso 6: Compilación y prueba Después de hacer todos los cambios necesarios, compilaremos el código para comprobar si hay errores. Si todo compila correctamente, podemos proceder a probar el EA en el probador de estrategias. Realizaremos una prueba visual utilizando datos históricos desde 2012 hasta el presente, seleccionando entradas apropiadas para RSI y períodos de promedio móvil, stop loss, take profit y la opción de cerrar operaciones en una señal opuesta.

Al seguir este tutorial, ha aprendido a codificar una estrategia con una tasa de ganancias del 100 %. Modificamos un EA existente y agregamos un filtro de promedio móvil al indicador RSI. Recuerde guardar su archivo y compilarlo sin ningún error. Ahora puede probar la estrategia en la plataforma MetaTrader 5 utilizando el probador de estrategias. ¡Buena suerte con tus futuros esfuerzos de codificación!

Amazing RSI trading bot in mql5! | MT5 programming
Amazing RSI trading bot in mql5! | MT5 programming
  • 2023.01.15
  • www.youtube.com
Today I will show you how to code a RSI trading bot for Metatrader 5. If you are new to mql5, just follow my steps and we will create a fully working RSI Ex...
 

Canal de Donchian indicador personalizado EA | programación MT5



Canal de Donchian indicador personalizado EA | programación MT5

Oye, este es Toby. Hoy, le mostraré cómo codificar un indicador personalizado en MQL5. Crearemos un indicador del Canal Donchian y luego lo usaremos para desarrollar un Asesor Experto (EA) rentable. Una vez que el EA esté listo, ejecutaremos algunas pruebas retrospectivas para evaluar su rendimiento. Como puede ver en los resultados, la estrategia funciona notablemente bien. ¡Empecemos!

Ahora, analicemos los resultados en el Probador de estrategias. El Asesor Experto del Canal Donchian muestra resultados prometedores. Entonces, nuestro primer paso es definir la estrategia. Codificaremos un indicador de Donchian Channel personalizado y lo usaremos para crear el Asesor Experto. Describamos la idea de la estrategia básica en el gráfico.

Las líneas azules representan el indicador del canal Donchian que codificaremos en este video. El canal Donchian muestra el máximo más alto y el mínimo más bajo de las n barras anteriores. Muchos comerciantes usan el Canal Donchian para desarrollar estrategias de ruptura, donde ingresan a una operación de compra cuando el precio cruza por encima de la banda superior. Sin embargo, para este EA, exploraremos el enfoque opuesto. Tomaremos una operación de venta cada vez que el precio cruce por encima de la banda superior del Canal Donchian. De manera similar, tomaremos una posición de compra cuando el precio cruce por debajo de la banda inferior del Canal Donchian. También estableceremos un stop-loss basado en puntos o un porcentaje del canal. Además, podríamos agregar un filtro al EA Donchian Channel para considerar el tamaño del canal.

Ahora, saltemos al Meta Editor para comenzar a codificar nuestro indicador Donchian Channel personalizado.

En Meta Editor, comencemos creando un nuevo archivo de indicador personalizado. Limpiaremos un poco el código eliminando los comentarios innecesarios y alineando los corchetes. A continuación, definiremos las propiedades del indicador. Especificaremos que debe mostrarse en la ventana del gráfico principal en lugar de una ventana separada. También declararemos la cantidad de búferes y gráficos que tendrá nuestro indicador, que en este caso son dos.

Continuando, definiremos las entradas para nuestro indicador personalizado. Estas entradas permiten a los usuarios personalizar el indicador al aplicarlo a un gráfico. Crearemos entradas para el período del canal Donchian, el desplazamiento del canal (como porcentaje) y el color del canal.

Después de compilar el código, pasaremos a la sección Variables globales, donde definiremos las variables necesarias para el indicador. Crearemos búferes para los valores superior e inferior del canal Donchian y variables adicionales para almacenar los valores superior e inferior, así como el índice de la primera barra.

En la función OnInit, inicializaremos nuestros búferes y estableceremos el nombre corto del indicador, que se usará para identificar el indicador en el gráfico.

Finalmente, en la función OnCalculate, realizaremos el cálculo para el indicador Donchian Channel. Comprobaremos si hay suficientes barras en el gráfico para continuar. Si no, devolveremos cero. De lo contrario, calcularemos los valores superior e inferior de cada barra utilizando los precios de apertura. Guardaremos estos valores en los búferes correspondientes.

Una vez que el código se compila sin errores ni advertencias, podemos probar nuestro indicador personalizado. Abra un gráfico, navegue hasta el Navegador y busque el indicador Mi canal Donchian. Arrástrelo y suéltelo en el gráfico. En la configuración del indicador, especifique el período, la compensación y el color deseados.

Donchian channel custom Indicator EA | MT5 programming
Donchian channel custom Indicator EA | MT5 programming
  • 2023.01.29
  • www.youtube.com
Today I will show you how to code a Donchian channel custom indicator EA for Metatrader 5. If you are new to mql5, just follow my steps and we will create a...
 

¡Impresionante robot comercial Donchian Channel en mql5! | programación MT5



¡Impresionante robot comercial Donchian Channel en mql5! | programación MT5

Una vez que haya agregado el indicador personalizado al gráfico, verá el canal Donchian mostrado como líneas azules. El indicador Donchian Channel muestra el máximo más alto y el mínimo más bajo de las barras 'n' anteriores. Se usa comúnmente para crear estrategias de ruptura, donde los comerciantes ingresan operaciones de compra cuando el precio cruza por encima de la banda superior del canal Donchian y venden operaciones cuando cruza por debajo de la banda inferior.

Sin embargo, para este EA (Asesor Experto), queremos probar el enfoque opuesto. En lugar de comprar cuando el precio cruce por encima de la banda superior, venderemos y viceversa. Entonces, siempre que el precio cruce por encima de la banda superior del Canal Donchian, tomaremos una posición de venta, y cuando cruce por debajo de la banda inferior, tomaremos una posición de compra.

Además, estableceremos un stop loss para cada operación, ya sea en puntos o como porcentaje del canal. También podemos considerar agregar un filtro a Donchian Channel EA según el tamaño del canal. Ahora, saltemos al MetaEditor para comenzar a codificar nuestro indicador de Canal Donchian personalizado.

En el MetaEditor, cree un nuevo archivo de indicador personalizado haciendo clic en "Nuevo" en la esquina superior izquierda, seleccionando "Indicador personalizado" y haciendo clic en "Siguiente". Nombre el archivo "MyDonchianChannel" y haga clic en "Siguiente" y "Finalizar" para completar el proceso. Una vez que se crea el archivo, limpie el código eliminando los comentarios innecesarios y alineando los corchetes. A continuación, compile el código para verificar si hay errores o advertencias.

Ahora, definamos las propiedades de nuestro indicador personalizado. Queremos que se muestre en la ventana del gráfico principal, así que establezca la propiedad "indicator_chart_window" en verdadero. También necesitamos definir el número de búferes y gráficos para nuestro indicador. Como tenemos dos líneas (superior e inferior), establezca "indicator_buffers" en 2 e "indicator_plots" en 2.

A continuación, definiremos los parámetros de entrada para nuestro indicador personalizado. Necesitamos entradas para el período del canal Donchian, el porcentaje de compensación y el color de las líneas indicadoras. Defina estas entradas utilizando los tipos apropiados (entero para período y compensación, y color para color) y establezca valores predeterminados y comentarios para cada entrada.

Vuelva a compilar el código para asegurarse de que no haya errores ni advertencias.

Ahora, pasemos a codificar la función "onCalculate" del indicador personalizado. Primero, verifique si la cantidad de barras en el gráfico es menor que el período de entrada más uno. Si es así, no hay suficientes barras para calcular el indicador, así que regrese con cero. A continuación, configure la variable "primera", que representa la primera barra para la que queremos comenzar a calcular el canal Donchian. Si no se ha realizado el cálculo anterior (anterior_calculado es cero), establezca "primero" en el período de entrada. De lo contrario, configúrelo en anterior_calculado menos uno. Ahora, necesitamos recorrer las barras usando un bucle for. Inicie el ciclo desde la "primera" barra y continúe hasta que la barra actual sea menor que el número total de barras en el gráfico. Aumente el contador de barras al final de cada iteración de ciclo.

Dentro del bucle, calcule los valores superior e inferior del canal Donchian utilizando los precios de apertura de cada barra. Almacene estos valores en las variables "superior" e "inferior", respectivamente.

Para calcular el desplazamiento, reste el valor inferior del valor superior y multiplíquelo por el desplazamiento de entrada dividido por 100. Esto nos dará el valor de desplazamiento en puntos o como un porcentaje del canal. Finalmente, almacene los valores calculados en los búferes correspondientes utilizando el índice de búfer y el contador de barras. Después de calcular y almacenar los valores en los búferes, debemos configurar las etiquetas de los indicadores para cada parcela. Estas etiquetas se mostrarán en la ventana de propiedades del indicador.

Asigne las etiquetas para los gráficos superior e inferior utilizando la función SetIndexLabel(), pasando el índice del búfer y la etiqueta como parámetros. A continuación, estableceremos los colores de las líneas indicadoras mediante las funciones SetIndexStyle() y SetIndexColor(). Especifique el índice de búfer, el estilo de línea (p. ej., STYLE_SOLID) y el color deseado para cada línea.

Finalmente, agregaremos un código adicional para que el indicador sea más atractivo visualmente. Podemos ocultar el nombre del indicador configurando la propiedad del indicador_nombre corto en una cadena vacía. Además, podemos agregar una etiqueta de gráfico con el valor actual de la banda superior usando las funciones ObjectCreate() y ObjectSetText().

Compile el código una vez más para asegurarse de que no haya errores ni advertencias.

¡Felicidades! Ha codificado con éxito el indicador del canal Donchian personalizado. Ahora, puede usar este indicador en su Asesor Experto para implementar su estrategia comercial.

En el próximo paso, pasaremos a codificar el Asesor Experto (EA) que utilizará el indicador Donchian Channel para ejecutar operaciones basadas en la estrategia de ruptura. Abra un nuevo archivo en el MetaEditor, asígnele el nombre "DonchianChannelEA" y seleccione la opción "Asesor experto". Haga clic en "Siguiente" y "Finalizar" para crear el archivo. Limpie el código inicial eliminando comentarios innecesarios y alineando los corchetes.

Primero, definiremos los parámetros de entrada para nuestro EA. Estos incluirán el tamaño del lote, el límite de pérdida, la toma de ganancias y el período y la compensación para el canal Donchian. Defina estas entradas usando los tipos apropiados y establezca valores predeterminados y comentarios para cada entrada. A continuación, codificaremos la función OnInit(). Dentro de esta función, inicializaremos el indicador Donchian Channel llamando a la función iCustom() con los parámetros necesarios.

Cree variables para almacenar el controlador del indicador, los valores de la banda superior y los valores de la banda inferior. Utilice la función ArraySetAsSeries() para configurar las matrices como series para garantizar la indexación correcta. Ahora, pasemos a codificar la función principal OnTick(), que manejará la lógica comercial.

Comience por verificar si hay suficientes barras para calcular el canal Donchian. Si no, regresa con cero. Obtenga los valores actuales de la banda superior e inferior del indicador utilizando la función CopyBuffer(). Ahora, buscaremos una señal de compra. Si el precio cruza por encima de la banda superior, abra una posición de venta utilizando la función OrderSend(). Establezca el tipo de orden apropiado (OP_SELL), el tamaño del lote, los niveles de stop loss y take profit. Recuerde manejar los posibles errores devueltos por la función OrderSend().

Del mismo modo, busque una señal de venta. Si el precio cruza por debajo de la banda inferior, abra una posición de compra utilizando la función OrderSend(). Establezca el tipo de orden apropiado (OP_BUY), el tamaño del lote, los niveles de stop loss y take profit.

Compile el código para asegurarse de que no haya errores ni advertencias.

¡Eso es todo! Ha completado la codificación para el asesor experto del canal Donchian. Ahora puede probar el EA en una cuenta de demostración o realizar una prueba retrospectiva utilizando datos históricos para evaluar su rendimiento. Recuerde probar a fondo su EA y considere implementar técnicas de gestión de riesgos antes de usarlo en una cuenta comercial real. Tenga en cuenta que el código proporcionado es una implementación básica y puede requerir modificaciones o mejoras adicionales para adaptarse a sus requisitos comerciales específicos.

Awesome Donchian Channel trading bot in mql5! | MT5 programming
Awesome Donchian Channel trading bot in mql5! | MT5 programming
  • 2023.02.02
  • www.youtube.com
Today I will show you how to code a Donchian channel trading bot for Metatrader 5. If you are new to mql5, just follow my steps and we will create a fully w...
Razón de la queja: