Mira cómo descargar robots gratis
¡Búscanos en Telegram!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Visualizaciones:
51
Ranking:
(1)
Publicado:
MQL5 Freelance ¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

GBPUSD Ciclo 1HRC4 - verdadero backtest no optimizado


Este asesor experto es un sistema multistrategia dividido en cuatro subsistemas de negociación independientes (del Ciclo 1 al Ciclo 4). Cada ciclo opera con su propio «Magic Number», indicadores, señales de entrada y parámetros de gestión del capital exclusivos.

1. Lógica del Ciclo 1: Confluencia de múltiples indicadores

El Ciclo 1 se basa en un filtro compuesto que combina hasta tres medias móviles (MA), un índice de fuerza relativa (RSI) y el rango porcentual de Williams (WPR).

Señales de entrada

Una variable principal, c1_signal, actúa como un registro binario para garantizar que los indicadores no entren en conflicto. Si el indicador A da una señal de compra, c1_signal pasa a ser 1. Si, a continuación, el indicador B da una señal de venta, c1_signal se restablece a 0 para invalidar la operación.

  • Medias móviles 1, 2 y 3:

    • Condición de compra: la barra anterior cierra por encima de la media móvil y la barra actual abre por encima de la media móvil ($Close[1] > MA$ y $Open[0] > MA$).

    • Condición de venta: La barra anterior cierra por debajo de la media móvil, y la barra actual abre por debajo de la media móvil ($Close[1] < MA$ y $Open[0] < MA$).

  • Filtro RSI:

    • Condición de compra: el RSI cae por debajo del umbral de sobreventa (RSI_Buy_Level, p. ej., 30).

    • Condición de venta: el RSI se sitúa por encima del umbral de sobrecompra (RSI_Sell_Level, p. ej., 70).

  • Filtro WPR:

    • Condición de compra: el WPR cae por debajo de WPR_Buy_Level (p. ej., -80).

    • Condición de venta: el WPR supera el nivel WPR_Sell_Level (por ejemplo, -20).

Procesamiento de señales

  • Regla de señales inversas: Si Reverse_Signals = true, una señal de compra final (1) se invierte a una señal de venta (2), y viceversa.

  • Restricción de una operación por barra: El EA comprueba si el precio de apertura actual coincide con c1_open_price. Si es así, ya se ha gestionado una posición en esta barra, y se bloquean nuevas ejecuciones hasta que se abra una nueva barra.

2. Lógica del ciclo 2: seguimiento de tendencias con envolventes

El ciclo 2 utiliza un indicador clásico de envolventes de doble banda para identificar las rupturas estructurales del mercado.

  • Desencadenante de compra: la barra anterior cierra por encima de la banda superior de la envolvente y la barra actual abre por encima de ella ($Close[1] > UpperBand$ y $Open[0] > UpperBand$). Esto supone una ruptura con un fuerte impulso alcista.

  • Desencadenante de venta: La barra anterior cierra por debajo de la banda inferior de la envolvente y la barra actual abre por debajo de ella ($Close[1] < LowerBand$ y $Open[0] < LowerBand$), lo que indica una ruptura bajista.

  • Inversión de señales: Si Reverse_Signals2 = true, convierte las rupturas en trampas de falsa ruptura (atenúa la ruptura a la baja o al alza).

3. Lógica del ciclo 3: reversión a la media de las envolventes

El ciclo 3 sigue parámetros idénticos a los del ciclo 2, pero invierte la lógica de ejecución predeterminada para apuntar a la reversión a la media (atenuando los extremos).

  • Desencadenante de compra: La barra anterior cierra por encima de la banda superior de la envolvente y la barra actual abre por encima de ella. Lógica: El código asigna aquí una señal de venta porque asume que el activo está sobrevalorado y retrocederá dentro de las bandas.

  • Desencadenante de venta: La barra anterior cierra por debajo de la banda inferior de la envolvente y la barra actual abre por debajo de ella. Lógica: El código asigna aquí una señal de compra, apostando por un rebote inmediato desde la zona de sobreventa.

4. Lógica del ciclo 4: Ruptura de la distancia entre puntos de las envolventes

El ciclo 4 introduce una restricción estricta de volatilidad/distancia en pips al indicador de envolventes, actuando como un sistema de ruptura agresivo.

  • Condición de compra: La distancia entre la banda inferior de la envolvente y el cierre anterior es mayor que «Distance» en puntos, Y la distancia entre la banda inferior de la envolvente y el precio de compra actual también es mayor que «Distance» ($LowerBand - Close[1] > Distance$ y $LowerBand - Bid > Distance$).

  • Condición de venta: La distancia entre el cierre anterior y la banda superior, así como la distancia entre el precio de compra actual y la banda superior, superan ambas la «Distancia» ($Close[1] - UpperBand > Distance$ y $Bid - UpperBand > Distance$).

5. Salida, cierre de la cesta y lógica de riesgo

La arquitectura de gestión de salidas no utiliza órdenes estándar de Stop Loss (SL) o Take Profit (TP) por posición. En su lugar, se basa en un sistema global de seguimiento de la cartera de capital de la cuenta, asignado por ciclo.

Captura de hitos

Cuando el recuento de posiciones de un ciclo pasa de 0 a 1 (seguido mediante c1_Buycount == 0 o c1_Sellcount == 0), el EA establece como referencia el capital base exacto de la cuenta de trading en ese momento:

$$\text{Capital de referencia} = \text{AccountInfoDouble}(\text{ACCOUNT\_EQUITY})$$

Utilizando esta referencia, establece objetivos globales estáticos para esa dirección de negociación específica:

  • Objetivo de Take Profit: si se especifica target_amount, asigna $\text{Referencia} + \text{target\_amount}$. De lo contrario, utiliza una fórmula porcentual:

    $$\text{Precio objetivo} = \text{Saldo de referencia} + \left(\frac{\text{Saldo de referencia} \times \text{porcentaje\_objetivo}}{100}\right)$$
  • Objetivo de stop loss: utiliza una restricción de caída porcentual en relación con el patrimonio capturado en la instantánea:

    $$\text{Precio de riesgo} = \text{Baseline} - \left(\frac{\text{Baseline} \times \text{Account\_Risk\_percent}}{100}\right)$$

Verificación dinámica de la cesta

En cada tick, el EA calcula el total acumulado de las ganancias/pérdidas flotantes en tiempo real, los swaps y las comisiones de todas las posiciones activas que coincidan con el número mágico y el tipo de operación (MyAccountProfit_Buy o MyAccountProfit_Sell) de ese ciclo específico.

$$\text{Valor actual de la cartera} = \text{Capital de referencia} + \text{Ganancias o pérdidas no realizadas}$$

Ejecución de la salida

Si $\text{Valor actual de la cartera} \ge \text{Precio objetivo}$ (se alcanza el objetivo de beneficio) O $\text{Valor actual de la cartera} \le \text{Precio de riesgo}$ (se supera el límite máximo de riesgo):

  1. El EA llama a ClosePositions().

  2. Recorre hacia atrás todas las posiciones de mercado, filtrando por coincidencia de número mágico y tipo de posición.

  3. Cada una de las operaciones correlacionadas se liquida al instante mediante una orden de mercado.

  4. El contador de ciclos de la dirección se restablece a 0, lo que prepara al EA para establecer una instantánea de referencia completamente nueva en la siguiente señal del indicador estructural.

6. Lógica de dimensionamiento (gestión del capital)

Los cálculos de volumen se realizan de forma dinámica mediante la rutina getLots(int cycle):

  • Lotes fijos: si AutoLots es «false», devuelve el ajuste de tamaño de lote predeterminado (por ejemplo, LotSize = 0,01).

  • Escalado dinámico del riesgo: Si AutoLots = true, el sistema ajusta automáticamente el volumen de la operación en función del margen libre:

    1. Consulta el margen exacto necesario para gestionar una operación estándar de 1,0 lotes sobre el activo actual mediante OrderCalcMargin.

    2. Proyecta una capacidad de inversión asequible utilizando la fórmula:

      $$\text{Volumen proyectado} = \frac{\text{Margen libre de la cuenta} \times \left(\frac{\text{Lots\_Risk}}{100}\right)}{\text{Margen por 1,0 lote}}$$
    3. El resultado final se compara con los límites impuestos por el bróker utilizando MathMin y MathMax para garantizar que se encuentre exactamente dentro del rango válido entre SYMBOL_VOLUME_MIN y SYMBOL_VOLUME_MAX, redondeado con precisión al tamaño de paso del activo de la bolsa más cercano (SYMBOL_VOLUME_STEP).

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

KCI Volatility Distance KCI Volatility Distance

La «KCI Volatility Distance» es un algoritmo avanzado y adaptativo, diseñado meticulosamente para reflejar el impulso del mercado y la dirección de la tendencia con absoluta precisión. Mediante un cálculo propio basado en matrices, esta herramienta filtra dinámicamente el ruido del mercado y ofrece una perspectiva estrictamente cuantitativa sobre la fuerza direccional. Desarrollada con un núcleo de programación orientada a objetos (OOP) altamente optimizado, está diseñada tanto para ofrecer claridad visual en las operaciones como para integrarse a la perfección en asesores expertos o módulos de aprendizaje automático, lo que garantiza un rendimiento ultraligero de la CPU en múltiples activos.

Double Enevlopes (Historical Gauged) Double Enevlopes (Historical Gauged)

Una herramienta y un sistema para gestionar el servicio de cuidado de niños :D

MA + Envelope Breakouts MA + Envelope Breakouts

Roturas basadas en el canal o la banda de envolvente; lógica de múltiples EA en un solo EA

CKS Position Risk Dashboard CKS Position Risk Dashboard

Un panel de control de MT5 de solo lectura para el cálculo del tamaño de los lotes en función del riesgo, el estado de la cuenta, los límites de volumen del bróker y la exposición actual a los símbolos.