JKEFtrendMartingale
- Asesores Expertos
-
Shi Yuan Wang
Desarrollo indicadores personalizados, Asesores Expertos (EA), scripts y herramientas de trading para MetaTrader 4 y MetaTrader 5, así como indicadores para TradingView (Pine Script).
Lo que puedo hacer por ti: - Convertir una regla de trading claramente descrita en un EA MQL4/MQL5 con backtesting - Versión: 1.1
- Activaciones: 5
JKEFtrendMartingale — Sistema de trading Martingale de seguimiento de tendencias que se adapta a la volatilidad
Descripción general
JKEFtrendMartingale es un asesor experto totalmente automatizado para MetaTrader 5. En el marco temporal seleccionado, se adapta a la volatilidad del mercado para seguir la tendencia y operar en las rupturas de tendencia. Tras una operación con pérdidas, aumenta el tamaño del lote de la siguiente operación según la regla configurada, y vuelve al tamaño de lote inicial una vez que los beneficios han compensado la pérdida acumulada.
El sistema evalúa únicamente el estado de las barras cerradas, por lo que las señales no se ven afectadas por una barra que aún no se haya cerrado. Una vez confirmada la dirección, el robot puede entrar con una orden de mercado o colocar una orden stop a una distancia definida del precio actual y esperar a la confirmación de la ruptura, ajustando esa orden pendiente mientras permanezca sin ejecutar. Solo se mantiene una posición por ciclo; no se acumulan posiciones en la misma dirección al mismo tiempo.
Ten en cuenta que este producto incluye un mecanismo que aumenta el tamaño del lote tras una pérdida. Se trata de un método de gestión del capital de alto riesgo que puede incrementar significativamente tanto el importe de las pérdidas por operación individual como el de las pérdidas acumuladas. Comprende el mecanismo a fondo y realiza pruebas completas en la cuenta demo antes de plantearte su uso en condiciones reales.
Lógica de negociación
Detección de estado. En primer lugar, se mide la volatilidad del precio: cuanto mayor es la volatilidad, más rápido sigue la media móvil al precio; cuanto más tranquilo está el mercado, más suave es la media. A continuación, la media se somete a un proceso de suavizado ponderado por el impulso para generar una línea de tendencia de referencia. Se calcula un percentil de desviación reciente por encima y por debajo de la línea de referencia. Un cierre por encima del percentil de desviación superior establece el estado «largo», y un cierre por debajo del percentil de desviación inferior establece el estado «corto». Los estados solo se actualizan en las barras completadas. El marco temporal de la señal viene definido por InpTF y puede diferir del marco temporal del gráfico.
Reglas a nivel de lote. El robot mantiene un registro de pérdidas acumuladas y un nivel de lote:
- cuando una posición cerrada tiene un resultado neto negativo (beneficio más swap más comisión), la pérdida acumulada aumenta y el nivel de lotes se incrementa en uno, con un límite máximo establecido por InpMaxLevel;
- cuando el resultado neto es positivo, el beneficio reduce la pérdida acumulada. El nivel de lotes se restablece a cero solo cuando la pérdida acumulada se ha absorbido por completo y alcanza el cero, devolviendo el tamaño del lote a su valor inicial;
- hasta que se produzca ese restablecimiento, cada nueva posición utiliza el tamaño de lote que corresponde al nivel actual.
El tamaño del lote se calcula en uno de dos modos. En el modo aditivo, el lote actual es igual al lote inicial más el nivel multiplicado por el paso. En el modo multiplicativo, el lote actual es igual al lote inicial multiplicado por el multiplicador elevado a la potencia del nivel. El tamaño final del lote está limitado al mínimo y al máximo del símbolo y se redondea al paso de lote del símbolo.
Primera entrada. Tras la carga o tras pulsar «Inicio», si el símbolo actual no tiene ninguna posición ni ninguna orden pendiente de este sistema, el robot lee la dirección de la señal actual. Cuando se define una dirección y está permitida, abre inmediatamente una posición en el mercado con el stop loss inicial asociado. Cuando la dirección es neutral, permanece a la espera hasta que aparezca una dirección definida. La primera posición también utiliza el tamaño de lote del nivel actual.
Tras el cierre de una posición. Cuando una posición finaliza —ya sea por stop loss, por trailing stop o manualmente—, el robot registra la hora de cierre, espera el número de segundos configurado y, a continuación, coloca una orden stop en la dirección de la señal actual: una orden stop de compra para posiciones largas y una orden stop de venta para posiciones cortas, a la distancia configurada del precio de mercado actual.
Gestión de órdenes pendientes. Mientras una orden stop está pendiente, el robot la sigue comparando con la señal actual:
- si la dirección de la señal cambia, la orden pendiente se elimina y se coloca una nueva en la dirección opuesta;
- si la dirección queda excluida por el filtro de dirección de la operación, la orden pendiente se elimina y el temporizador de espera se reinicia;
- si el precio se mueve en la dirección favorable, la orden pendiente lo sigue —una orden stop de compra se desplaza hacia abajo y una orden stop de venta se desplaza hacia arriba—, de modo que la orden sigue la evolución del mercado en lugar de permanecer fija.
Una orden pendiente ejecutada se convierte en una posición abierta.
Gestión de posiciones. Mientras una posición está abierta, se eliminan todas las órdenes pendientes no ejecutadas y se mantiene el stop loss según los parámetros del trailing stop: el trailing stop se activa una vez que las ganancias alcanzan la distancia de activación, mantiene la distancia configurada respecto al precio actual y se desplaza únicamente en la dirección favorable.
Salida. No se utiliza un take profit fijo. Las salidas se producen mediante el stop loss inicial, el trailing stop o el botón «Cerrar todo» del panel.
Persistencia del estado
La pérdida acumulada y el nivel de lotes se guardan en memoria. La forma en que se gestionan al cargarse el robot viene definida por InpPersistState:
- cuando está activada, el robot analiza las operaciones de salida de los últimos siete días que coincidan con el símbolo actual y el identificador de orden configurado, y reconstruye la pérdida acumulada y el nivel de lotes, de modo que la secuencia anterior pueda continuar tras un reinicio;
- cuando está desactivada, no se realiza ninguna reconstrucción y tanto la pérdida acumulada como el nivel de lotes comienzan desde cero.
Ten en cuenta que la reconstrucción abarca únicamente los últimos siete días. No se tiene en cuenta el historial anterior, y tampoco se contabilizan las operaciones cerradas manualmente que no incluyan el identificador de orden correspondiente.
Gestión de riesgos
- Cada entrada lleva asociado un stop loss inicial a la distancia configurada en puntos; un valor de cero significa que no hay ningún stop loss asociado.
- Trailing stop opcional con parámetros independientes de activación y distancia; si se establece cualquiera de ellos en cero, se desactiva la función.
- El nivel de lotes tiene un límite máximo establecido por InpMaxLevel. Una vez alcanzado el límite, el tamaño del lote no se incrementa más.
- El margen libre se calcula antes de cada solicitud de orden. Si el margen libre es insuficiente, no se envía ninguna orden, se registra una entrada en el registro y se inicia un periodo de espera para evitar repetidas solicitudes fallidas.
- El modo de ejecución admitido por el símbolo se detecta automáticamente, con reintentos de reserva cuando es necesario. Las órdenes de mercado y las órdenes pendientes se gestionan por separado.
- Se comprueban las sesiones de negociación y los modos de negociación de los símbolos, de modo que no se envían solicitudes mientras el mercado está cerrado y se aplica un periodo de espera para reducir los mensajes de error innecesarios.
- El tamaño del lote se normaliza al mínimo, máximo y paso del símbolo para evitar rechazos del servidor causados por la precisión.
Estas medidas no eliminan el riesgo derivado del tamaño progresivo de los lotes. Un stop loss puede ejecutarse a un precio desfavorable durante brechas de cotización, deslizamientos o condiciones de mercado extremas, y la pérdida real puede ser mayor que la distancia de stop configurada.
Panel en el gráfico
El gráfico muestra tres botones —Iniciar, Detener y Cerrar todo— además de un bloque de estado.
- «Iniciar» activa el trading automatizado. Si no hay ninguna posición, se intenta la primera entrada según la señal actual. Se eliminan los periodos de espera por cierre del mercado y por fondos insuficientes.
- «Detener» detiene las nuevas entradas. Las posiciones abiertas no se ven afectadas y el trailing stop sigue activo.
- «Cerrar todo» cierra las posiciones abiertas por este sistema en el símbolo actual, elimina las órdenes pendientes y detiene el trading automático. Esta acción no borra la pérdida acumulada ni el nivel de lotes; para empezar de cero, desactiva la persistencia de estado y vuelve a cargar el robot.
El bloque de estado muestra el estado (en ejecución o detenido), el marco temporal de la señal, la dirección permitida, el modo de lotes, el lote inicial, el lote actual con su nivel, la pérdida acumulada, el interruptor de persistencia de estado, el modo de confirmación, el stop loss inicial, el activador y la distancia del trailing stop, la distancia de la orden pendiente, el tiempo de espera y la fase actual: mercado cerrado, fondos insuficientes, a la espera de la primera entrada, en posición, orden pendiente, a la espera de una orden pendiente o sin posiciones.
La ubicación del grupo de botones (una de las cuatro esquinas del gráfico), el desplazamiento horizontal y vertical, el ancho y la altura de los botones, y el tamaño de la fuente son configurables.
Condiciones de funcionamiento recomendadas
- Símbolo: instrumentos con buena liquidez y spreads estables, como los principales pares de divisas, cruces líquidos, metales preciosos y CFD sobre los principales índices. Compruébalo primero en una cuenta demo.
- Marco temporal: el robot se puede aplicar a cualquier gráfico; el marco temporal de la señal lo establece InpTF, por defecto M5.
- Tipo de cuenta: se admiten tanto cuentas de compensación como de cobertura.
- Tamaño de la cuenta: dado que el tamaño del lote aumenta tras las pérdidas, el capital necesario es considerablemente mayor que en un enfoque de lotes fijos. Calcula el capital necesario a partir de la pérdida total de una secuencia perdedora que alcance el nivel máximo, no a partir de un único stop loss. Con la configuración predeterminada (lote inicial de 0,01, modo aditivo, paso de 0,01, nivel máximo de 10 y stop loss inicial de 500 puntos), el tamaño del lote en el nivel más alto es de 0,11, y por lo general se recomienda un saldo de cuenta de al menos 1 000 USD o su equivalente en los principales pares de divisas. En modo multiplicativo, calcula primero el lote del nivel más alto: con el multiplicador predeterminado de 2,0 y un nivel máximo de 10, ese lote es aproximadamente 1024 veces el lote inicial, lo que significa unos 10,24 lotes a partir de un lote inicial de 0,01. En ese caso, o bien se aporta un capital sustancialmente mayor, o bien se reducen el multiplicador y el nivel máximo. Se trata únicamente de una sugerencia sobre la tolerancia de capital y no constituye una expectativa de rendimiento.
- Entorno: utiliza una cuenta con una ejecución estable y baja latencia, y mantén la terminal en línea en un VPS para que el estado no se reconstruya de forma incompleta tras un reinicio.
Parámetros de entrada
Parámetros de operación
Parámetro | Valor por defecto | Descripción |
|---|---|---|
InpTF | PERIOD_M5 | Intervalo de tiempo utilizado para el cálculo de la señal; puede diferir del intervalo de tiempo del gráfico |
InpTradeDirection | TRADE_DIR_BOTH | Dirección permitida: ambas, solo larga o solo corta |
InpInitialLot | 0,01 | Tamaño del lote utilizado en el nivel cero |
InpLotMode | LOT_MODE_ADD | Modo de progresión del lote: aditivo o multiplicativo |
InpLotStep | 0,01 | Lote añadido por nivel en modo aditivo |
InpLotMultiplier | 2,0 | Multiplicador de lotes por nivel en modo multiplicativo |
InpMaxLevel | 10 | Nivel máximo de lotes; no se producirá ningún aumento adicional más allá de este límite |
InpStopLoss | 500 | Distancia inicial del stop loss en puntos; 0 significa que no hay stop loss |
InpTrailTrigger | 200 | Beneficio necesario para activar el stop dinámico, en puntos |
InpTrailDistance | 100 | Distancia que se mantiene entre el trailing stop y el precio actual, en puntos |
InpWaitSeconds | 10 | Segundos de espera tras el cierre de una posición antes de la siguiente orden pendiente |
InpPendingDistance | 500 | Distancia de la orden stop respecto al precio de mercado actual, en puntos |
InpMagic | 20268888 | Identificador de la orden utilizado para diferenciar este sistema de otros programas |
InpSlippage | 30 | Desviación máxima aceptada para el envío de órdenes, en puntos |
Opciones de inicio
Parámetro | Valor por defecto | Descripción |
|---|---|---|
InpAutoStart | true | Iniciar la negociación inmediatamente después de la carga; compartido con el botón «Inicio» del panel |
InpPersistState | true | Recalcular la pérdida acumulada y el nivel de lotes a partir de las operaciones de los últimos siete días al cargar la aplicación |
Configuración del modo de ejecución
Parámetro | Por defecto | Descripción |
|---|---|---|
InpAutoDetectFilling | true | Detecta automáticamente los modos de relleno compatibles con el símbolo |
InpManualFilling | ORDER_FILLING_FOK | Modo de relleno utilizado cuando la detección automática está desactivada |
InpFillRetryMax | 4 | Número máximo de reintentos en el modo de llenado |
Interfaz
Parámetro | Valor por defecto | Descripción |
|---|---|---|
InpBtnCorner | BTN_CORNER_RL | Esquina del gráfico para el grupo de botones |
InpBtnX | 10 | Desplazamiento horizontal desde la esquina seleccionada, en píxeles |
InpBtnY | 10 | Desplazamiento vertical desde la esquina seleccionada, en píxeles |
InpBtnW | 70 | Ancho del botón en píxeles |
InpBtnH | 25 | Altura del botón en píxeles |
InpText | 9 | Tamaño de la fuente del botón |
Instalación y guía de inicio rápido
- Instala el producto desde el Market o el Navigator; aparecerá en la carpeta «Experts\Market».
- Abre un gráfico del símbolo de interés y aplica el robot.
- Configura el lote inicial, el modo de lote con paso o multiplicador, el nivel máximo, el stop loss inicial, el trailing stop, la distancia de orden pendiente y el marco temporal de la señal en la pestaña «Inputs».
- Asegúrate de que la función de trading automático esté activada en la terminal y de que el nombre del robot, junto con un icono de carita sonriente, aparezca en la esquina superior derecha del gráfico.
- Mantén «InpAutoStart» configurado en «true» para un inicio inmediato, o pulsa «Start» en el panel.
- Pulsa «Detener» para detener nuevas entradas, o «Cerrar todo» para cerrar posiciones y eliminar las órdenes pendientes.
Recomendaciones para las pruebas
- Descarga el historial completo del símbolo y realiza pruebas con spreads reales o personalizados en el Strategy Tester. Presta especial atención al uso máximo del margen y a la caída máxima durante las secuencias de pérdidas.
- Ejecuta primero el robot en una cuenta de demostración para comprobar los cambios en el nivel de lotes, el comportamiento de las órdenes pendientes, el comportamiento del trailing stop y el registro de resultados.
- Empieza a realizar las pruebas en modo aditivo y con un nivel máximo reducido. Solo considera otros ajustes una vez que te sientas cómodo con la pérdida acumulada en una secuencia en el peor de los casos.
- Cuando se ejecute en varios símbolos en una misma cuenta, utiliza un gráfico independiente por símbolo y considera utilizar identificadores de orden distintos para mantener los registros claros.
- Antes de modificar la configuración de los lotes, calcula la pérdida máxima por operación que implica el nivel de lotes más alto combinado con el stop loss inicial.
Limitaciones y notas
- El robot solo gestiona las posiciones y las órdenes pendientes del símbolo del gráfico actual que tengan su propio identificador de orden. Las posiciones manuales y las órdenes de otros programas no se ven afectadas.
- No se utiliza ningún objetivo de take profit; la cantidad de beneficio que se obtiene depende de los parámetros del trailing stop.
- No hay ningún filtro integrado de noticias, de sesión, de spread, de tiempo máximo de tenencia, de límite de pérdidas diario ni de límite máximo de drawdown.
- El tamaño del lote no se calcula automáticamente a partir del porcentaje de riesgo de la cuenta, por lo que debe ajustarse manualmente cuando cambie el tamaño de la cuenta.
- La persistencia del estado solo lee las operaciones de los últimos siete días. Tras un reinicio o una recarga, los resultados fuera de ese intervalo no se reflejarán en los valores reconstruidos.
- La terminal debe permanecer conectada. No se envían solicitudes durante la desconexión, y el estado tras la reconexión depende de las posiciones y órdenes existentes en ese momento.
- Se tienen en cuenta las órdenes pendientes y las modificaciones de stop loss, por lo que los precios de ejecución reales dependen del spread, el deslizamiento y la liquidez.
Notas de riesgo sobre el dimensionamiento progresivo de lotes
Aumentar el tamaño del lote tras una pérdida es el aspecto de este producto que requiere mayor atención. Por favor, confirma lo siguiente antes de utilizarlo:
- Cuanto más se prolongue una racha de pérdidas, mayor será el lote siguiente, y tanto el margen utilizado como la pérdida potencial crecerán de forma aditiva o geométrica.
- El modo multiplicativo crece más rápido. El multiplicador y el nivel máximo determinan directamente el lote más grande, así que calcula ese valor antes de decidir el tamaño de la cuenta.
- El stop loss inicial no representa la pérdida máxima. Las brechas, el deslizamiento y la escasa liquidez pueden provocar que las ejecuciones sean peores que el nivel de stop configurado.
- Cuando el margen libre es insuficiente, no se envía ninguna orden y comienza un periodo de espera, lo que interrumpe la progresión. Es posible que las ganancias posteriores no puedan absorber la pérdida acumulada tal y como estaba previsto.
- Si este nivel de riesgo no es aceptable, reduce el nivel máximo, utiliza el modo aditivo con un lote inicial más pequeño o elige un enfoque que no aumente el tamaño del lote tras las pérdidas.
Aviso sobre riesgos
El trading automatizado no elimina el riesgo de mercado, y aumentar el tamaño del lote tras sufrir pérdidas eleva aún más el riesgo de la cuenta. Los resultados obtenidos a partir de datos históricos no son indicativos de resultados futuros, y los resultados de las cuentas de demostración pueden diferir de los de las cuentas reales. Este producto no garantiza ningún beneficio y no constituye un consejo de inversión. Establece el tamaño del lote, el nivel máximo y el stop loss de acuerdo con tu propia tolerancia al riesgo y pruébalo a fondo antes de utilizar una cuenta real. Los resultados de las operaciones obtenidos con este producto son responsabilidad exclusiva del usuario.
Preguntas frecuentes
El robot no abrió una operación justo después de iniciarse. ¿Es esto normal?
Sí. Si la dirección de la señal es neutra al iniciarse, el robot espera hasta que aparezca un estado definido de compra o venta.
¿Cuándo vuelve a cero el nivel de lotes?
Solo cuando la pérdida acumulada haya sido absorbida por completo por las ganancias posteriores y alcance el cero. Hasta que eso ocurra, el nivel no disminuye, aunque algunas operaciones sean rentables.
¿Se mantiene el nivel de lotes tras reiniciar la terminal?
Depende de InpPersistState. Cuando está activado, el nivel se reconstruye a partir de las operaciones realizadas en los últimos siete días que coincidan con el símbolo y el identificador de la orden. Cuando está desactivado, se inicia desde cero.
¿Se puede utilizar con varios símbolos a la vez?
Sí. Asigna un gráfico por símbolo. Se recomienda utilizar identificadores de orden distintos. La pérdida acumulada y el nivel de lotes se registran de forma independiente para cada símbolo.
¿Por qué aparece en el registro un mensaje de fondos insuficientes?
Antes de cada solicitud se comprueba el margen libre. Cuando es insuficiente, no se envía ninguna orden, se registra el evento y comienza un periodo de espera. Reduce el lote inicial, el paso o el multiplicador, baja el nivel máximo o ingresa fondos.
¿Al pulsar «Cerrar todo» se restablece el nivel de lotes?
No. «Cerrar todo» solo cierra las posiciones y elimina las órdenes pendientes. La pérdida acumulada y el nivel de lotes mantienen sus valores. Para empezar de cero, desactiva la persistencia de estado y vuelve a cargar el robot.
