$ £ ¥
¥ £ $

Plantilla de asesor experto para MT5

Contenido

En algún momento de su carrera, los operadores deciden que es una buena idea automatizar lo que están haciendo. Ahí es donde resultan útiles los asesores expertos automatizados.

El trading automatizado tiene ciertas ventajas sobre el trading manual:

  • No es necesario supervisar constantemente los gráficos.
  • Sin influencia emocional.
  • Operativa 24 horas al día.
  • Sin errores accidentales (si se programa correctamente).
  • Posibilidad de operar múltiples estrategias simultáneamente.

Sin embargo, programar su propio robot de trading (asesor experto) no es muy sencillo, ni siquiera con estrategias simples. En el caso de los sistemas de trading complejos, resulta extremadamente difícil. Hay que formularlo todo en términos de condiciones e instrucciones claras y pensar en muchos casos extremos para cubrir todas las situaciones posibles.

Pero si su objetivo es empezar a programar su propio robot, tiene que empezar con algo básico.

La plantilla de asesor experto para MT5 presentada aquí puede ser un punto de partida en el desarrollo de sus robots de trading.

Incluye el flujo de trabajo básico y las funciones de un asesor experto de trading sin implementar ninguna señal de entrada y salida específica. Es fácil añadirle señales de entrada y salida de su estrategia.

El código fuente reducirá significativamente el tiempo que dedica a desarrollar un asesor experto.

Plantilla de asesor experto para MT5


Qué es la plantilla de asesor experto para MT5

La plantilla de asesor experto para MT5 incluye más de 700 líneas de código fuente comentado que puede utilizar para crear su propio EA.

Puede parecer mucho código para una plantilla básica, pero no hay nada difícil y muchas de esas líneas son comentarios para ayudarle a entender mejor la lógica del código.

Puede personalizar partes indicadas del código para implementar su estrategia de entrada y salida y tener su propio EA listo para usar.


Qué incluye la plantilla de asesor experto para MT5

  • Comentarios para cada función para comprender la lógica
  • Código bien escrito
  • Estructura modular
  • Gestión del riesgo mediante el cálculo automático del tamaño de las posiciones
  • Selección de stop-loss fijo o automático
  • Selección de take-profit fijo o automático
  • Filtro de horas de negociación
  • Cierre parcial
  • Parámetro de prueba personalizado

Parámetros de entrada de la plantilla del robot para MT5


Qué NO ES la plantilla de asesor experto para MT5

La plantilla de asesor experto para MT5 NO ES una estrategia totalmente automatizada.

Es necesario añadir su propio código de señales de entrada y salida a la plantilla para que pueda realizar operaciones.


Por qué utilizar la plantilla de asesor experto para MT5

  • Ahorre tiempo: puede ahorrarse muchas horas de aprendizaje y programación utilizando estas funciones ya preparadas.
  • Tratamiento de errores: la plantilla comprueba los errores comunes en tiempo de ejecución en todas sus funciones.
  • Gestión del riesgo: dimensionamiento de posiciones fijo y basado en el riesgo para una gestión flexible del riesgo.
  • Fácil de editar: añadiendo y modificando solo unas pocas líneas de código obtendrá un EA funcional basado en su indicador favorito.

Cuál es la lógica de un asesor experto

Lógica del asesor experto en MT5

Un EA básico se divide en tres funciones principales:

  1. OnInit() es la inicialización del EA. Es la primera función que se ejecuta al cargar el EA en un gráfico. Solo se ejecuta una vez.
  2. OnTick() se ejecuta cada vez que MT5 recibe una nueva cotización para el instrumento de trading actual.
  3. OnDeinit() se ejecuta una vez justo después de eliminar el EA del gráfico.

Módulos incluidos en la plantilla de asesor experto para MT5

La plantilla del asesor experto para MT5 está escrita de forma modular, de modo que cada operación está lógicamente separada del resto en funciones independientes. Esto permite que el código fuente sea más fácil de leer y comprender y también facilita la personalización del código.

Aquí puede ver cómo se separan las funciones en el flujo de ejecución:

Función OnInit

Función de inicialización de la plantilla del asesor experto para MT5

Función OnTick

Función Every Tick en la plantilla del asesor experto para MT5

No hay nada en la función DeInit de esta plantilla EA: solo un marcador de posición. Puede añadir fácilmente su propio código ahí, pero lo más probable es que nunca necesite incluir nada.


Requisitos para empezar a utilizar la plantilla de asesor experto para MT5

La plantilla de asesor experto para MT5 es una gran herramienta en las manos adecuadas, pero puede que no sea para todo el mundo. Considere la posibilidad de utilizar esta plantilla de asesor experto si cumple las siguientes condiciones.

Conocimientos básicos de programación en MQL5

Aunque la mayor parte del código se proporciona y está bien comentado, usted necesita ser capaz de añadir su propio código para las señales de entrada y salida y para cualquier otra personalización (como un trailing stop, por ejemplo).

Mirar el código fuente de otros asesores expertos puede ayudarle con esto.

Plataforma MT5

Los archivos de asesores expertos que descargue están destinados a la plataforma MetaTrader 5. No funcionarán en MetaTrader 4.

Comprender cómo compilar

Es aconsejable familiarizarse con el proceso de compilación. Esta plantilla es en realidad el código fuente para ser editado en MetaEditor y compilado para convertirse en un EA que funcione.

Voluntad de experimentar

Debe tenerse en cuenta que esta no es una estrategia de trading que funcione plenamente. Tendrá que idear su propia estrategia y señales de entrada y salida. Puede que tenga que realizar muchos backtests y cambiar el código varias veces antes de encontrar algo que merezca la pena.

Del código fuente

Puede ver algunos extractos del código. Es una buena manera de saber si el producto es adecuado para usted.

Si lo que ve tiene sentido, entonces es probable que pueda utilizar esta plantilla EA sin ningún problema.

Si no tiene ningún sentido para usted, pero está interesado en ver cómo funciona el código de un asesor experto, entonces puede ayudarle.

Si no es de los que programan y todo esto no le interesa, probablemente esta plantilla no sea para usted.

Propiedades del experto

//-PROPIEDADES-//
// Las propiedades ayudan a que el software se vea mejor al cargarlo en MT5.
// Proporcionan más información y detalles
// Esto es lo que se ve en la pestaña Acerca de cuando se adjunta el asesor experto a un gráfico.
#property link          "https://www.earnforex.com/es/asesores-expertos-metatrader/mt5-ea-template/"
#property version       "1.00"
#property copyright     "EarnForex.com - 2024"
#property description   "A basic expert advisor template for MT5."
#property description   ""
#property description   "WARNING: There is no guarantee that this expert advisor will work as intended. Use at your own risk."
#property description   ""
#property description   "Find more on www.EarnForex.com"
#property icon          "\\Files\\EF-Icon-64x64px.ico"
 

Parámetros de entrada

// Parámetros del EA
input string Comment_0 = "==========";          // EA-Specific Parameters
// !! Declare aquí los parámetros específicos de su EA.
// Por ejemplo, un período de media móvil, un nivel de RSI, o cualquier otra cosa que su EA necesite saber para implementar su estrategia de trading.
// Todos los parámetros de entrada comienzan con la palabra clave 'input'.
// input int ejemplo = 10; // Este es un parámetro de entrada de ejemplo

input string Comment_1 = "==========";  // Ajustes de las horas de negociación
input bool UseTradingHours = false; // Limitar el horario de negociación
input ENUM_HOUR TradingHourStart = h07; // Hora de inicio de la negociación (hora del servidor del bróker)
input ENUM_HOUR TradingHourEnd = h19; // Hora final de negociación (hora del servidor del bróker)

input string Comment_2 = "=========="; // Configuración ATR
input int ATRPeriod = 100; // Período del ATR
input ENUM_TIMEFRAMES ATRTimeFrame = PERIOD_CURRENT; // Marco temporal del ATR
input double ATRMultiplierSL = 2; // Multiplicador ATR para el stop-loss
input double ATRMultiplierTP = 3; // Multiplicador ATR para el take-profit

// Parámetros generales de entrada
input string Comment_a = "=========="; // Configuración de la gestión del riesgo
input ENUM_RISK_DEFAULT_SIZE RiskDefaultSize = RISK_DEFAULT_FIXED; // Modo del tamaño de posición
input double DefaultLotSize = 0.01; // Tamaño de la posición (si es fija o si no hay stop loss definido)
input ENUM_RISK_BASE RiskBase = RISK_BASE_BALANCE; // Base del riesgo
input int MaxRiskPerTrade = 2; // Porcentaje a arriesgar en cada operación
input double MinLotSize = 0.01; // Tamaño mínimo de posición permitido
input double MaxLotSize = 100; // Tamaño máximo de posición permitido
input int MaxPositions = 1; // Número máximo de posiciones para este EA

input string Comment_b = "=========="; // Ajustes de Stop-Loss y Take-Profit
input ENUM_MODE_SL StopLossMode = SL_FIXED; // Modo del stop-loss
input int DefaultStopLoss = 0; // Stop-loss por defecto en puntos (0 = sin stop-loss)
input int MinStopLoss = 0; // Mínimo stop-loss permitido en puntos
input int MaxStopLoss = 5000; // Máximo stop-loss permitido en puntos
input ENUM_MODE_TP TakeProfitMode = TP_FIXED; // Modo del take-profit
input int DefaultTakeProfit = 0; // Take-profit por defecto en puntos (0 = sin take-profit)
input int MinTakeProfit = 0; // Take-profit mínimo permitido en puntos
input int MaxTakeProfit = 5000; // Take-profit máximo permitido en puntos

input string Comment_c = "=========="; // Configuración del cierre parcial
input bool UsePartialClose = false; // Usar cierre parcial
input double PartialClosePerc = 50; // Porcentaje del cierre parcial
input double ATRMultiplierPC = 1; // Multiplicador ATR para el cierre parcial

input string Comment_d = "=========="; // Configuración adicional
input int MagicNumber = 0; // Número mágico
input string OrderNote = ""; // Comentario para las órdenes
input int Slippage = 5; // Deslizamiento en puntos
input int MaxSpread = 50; // Spread máximo permitido para operar, en puntos
 

Procesamiento de ticks

// Procesamiento de entrada y salida
void ProcessTick()
{
    if (!GetIndicatorsData()) return;
    
    if (CountPositions())
    {
        // Hay una posición abierta. Gestionar SL, TP, o cerrar si es necesario.
        if (UsePartialClose) PartialCloseAll();
        CheckExitSignal();
    }

    // Un bloque de código que permite que el código subsiguiente se ejecute solo cuando aparece una nueva barra en el gráfico.
    // Esto significa que las señales de entrada se comprobarán únicamente dos veces por barra.
    /* static datetime current_bar_time = WRONG_VALUE;
    datetime previous_bar_time = current_bar_time;
    current_bar_time = iTime(Symbol(), Period(), 0);
    static int ticks_of_new_bar = 0; // Procesa dos ticks de cada nueva barra para permitir que los buffers de los indicadores se refresquen.
    if (current_bar_time == previous_bar_time)
    {
        ticks_of_new_bar++;
        if (ticks_of_new_bar > 1) return; // Omitir después de dos ticks.
    } 
    else ticks_of_new_bar = 0; */

    // El número se recalcula después de la primera llamada porque algunas operaciones podrían haberse cerrado.
    if (CountPositions() < MaxPositions) CheckEntrySignal(); // Comprueba las señales de entrada solo si no hay ya demasiadas posiciones.
}
 

Plantilla de comprobación de la señal de entrada

// Señal de entrada
void CheckEntrySignal()
{
    if ((UseTradingHours) && (!IsCurrentTimeInInInterval(TradingHourStart, TradingHourEnd))) return; // Restricciones del horario de negociación para la entrada.

    bool BuySignal = false;
    bool SellSignal = false;

    // Condiciones de la señal de compra

    // Aquí es donde debe insertar su señal de entrada para órdenes de COMPRA.
    // Incluir una condición para abrir una orden de compra, la condición tendrá que establecer BuySignal en true o false.
   
    //!! Descomente y modifique esta línea de comprobación de señal de entrada de compra:
    //if ((Indicator_current > iClose(Symbol(), Period(), 1)) && (Indicator_previous <= iClose(Symbol(), Period(), 2))) BuySignal = true; // Comprueba si el valor del indicador cruzó el nivel de precio de cierre desde abajo.

    if (BuySignal)
    {
        OpenBuy();
    }

    // Condiciones de la señal de venta

    // Aquí es donde debe insertar su señal de entrada para las órdenes de VENTA.
    // Incluir una condición para abrir una orden de venta, la condición tendrá que establecer SellSignal en true o false.
    
    //!! Descomente y modifique esta línea de comprobación de señal de entrada de venta:
    //if ((Indicator_current < iClose(Symbol(), Period(), 1)) && (Indicator_previous >= iClose(Symbol(), Period(), 2))) SellSignal = true; // Comprueba si el valor del indicador cruzó el nivel de precio de cierre desde arriba.

    if (SellSignal)
    {
        OpenSell();
    }
}
 

Descargas

 

Puede abrir una cuenta de trading con cualquiera de los brókeres de Forex con MT5 para instalar el asesor experto para MetaTrader 5 presentado aquí.

Cómo instalar la plantilla de asesor experto para MT5

  1. Descargue el archivo del asesor experto.
  2. Abra la carpeta de datos de MetaTrader 5 (mediante Archivo→Abrir carpeta de datos o Ctrl+Mayús+D).
  3. Abra la carpeta MQL5.
  4. Copie todas las carpetas del archivo directamente en la carpeta MQL5.
  5. Reinicie MetaTrader 5 o actualice la lista de asesores expertos haciendo clic derecho en la subventana del Navegador de la plataforma y pulsando en Actualizar.

Cómo utilizarla

Las partes del código que requieren modificaciones o la inserción de sus propios fragmentos de código se marcan con signos de exclamación dobles (!!). Deberá personalizar las siguientes funciones para crear un EA que funcione:

  • GetIndicatorsData() contiene el código que lee los valores de los indicadores utilizados posteriormente en otras funciones. Si planea que el EA utilice algún indicador en su estrategia de trading, entonces necesita modificar esta función.
  • EvaluateEntry() contiene el código para activar las señales de entrada. Es necesario añadir algo aquí para que el EA abra nuevas posiciones. En los comentarios dentro de esta función se propone un código de entrada de ejemplo.
  • EvaluateExit() contiene el código para activar la señal de salida. Puede dejar esto como está si planea usar stop-loss y take-profit fijos. De lo contrario, en esta función se pueden definir señales de salida basadas en indicadores.
 

Si le interesan las plantillas de asesores expertos, puede que también quiera echar un vistazo a nuestra plantilla de asesor experto para MT4.

Discusión

¿Tiene alguna sugerencia o pregunta sobre este EA? Siempre puede debatir sobre la plantilla de asesor experto para MT5 con los otros operadores de FX y programadores de MQL5 en nuestro foro.