Estrategia de trading cuantitativo de inversión de tendencia con simulación Renko sin repintado en varios pasos

RENKO RSI SMA EMA VOL BRICK BACKTESTING REPAINTING
Fecha de creación: 2025-03-04 10:26:05 Última modificación: 2025-03-04 10:26:05
Copiar: 0 Número de Visitas: 547
2
Seguir
319
Seguidores

Estrategia de trading cuantitativo de inversión de tendencia con simulación Renko sin repintado en varios pasos Estrategia de trading cuantitativo de inversión de tendencia con simulación Renko sin repintado en varios pasos

Descripción general de la estrategia

La estrategia es un sistema de comercio de cantidad sin replanteo basado en la simulación de gráficos de Renko que resuelve el problema de replanteo en la estrategia tradicional de Renko mediante la simulación del comportamiento de los bloques de Renko en el gráfico de tiempo estándar. La estrategia utiliza bloques de precio de tamaño fijo para filtrar el ruido del mercado, centrándose solo en los cambios de precio significativos y asegurando que las señales históricas permanezcan inalterables.

Las principales características:

  • Realizar el efecto Renko no re-mapeado en el gráfico de tiempo
  • Revertir la tendencia usando el cambio de dirección de los bloques
  • Mecanismo de verificación en varios pasos para mejorar la calidad de la señal
  • El proceso de formación de los bloques se muestra gráficamente
  • Resultados estables de la retroalimentación de acuerdo con el rendimiento de las transacciones en tiempo real

Principio de estrategia

El principio central de esta estrategia es implementar la función de los bloques de Renko en el gráfico de tiempo estándar, al tiempo que se resuelve el problema de replanteo en el gráfico de Renko tradicional. El principio de trabajo específico es el siguiente:

  1. Configuración e inicialización de los parámetros:

    • brickSizeDefinir el tamaño de un bloque y determinar cuánto debe moverse el precio para que se formen nuevos bloques
    • renkoPriceEl precio de cierre de Renko, el último bloque de Renko terminado, se almacena.
    • prevRenkoPriceEl precio de los bloques de Renko se mantiene al mismo nivel que el anterior.
    • brickDir: Seguir la dirección de los bloques ((1 = aumento, -1 = disminución)
    • newBrickEl logotipo de Bull indica si se han formado nuevos bloques.
    • brickStart: Almacenar el índice de columnas donde comienza el bloque actual
  2. Identificación de bloques de Renko sin replantear:

    • El sistema sólo ejecuta el cálculo en la columna de confirmación, asegurando que los datos históricos no se vuelvan a calcular
    • Calcular la diferencia entre el precio actual y el nivel del bloque de Renko anterior
    • Cuando la diferencia de precio alcanza o supera el tamaño del bloque, se forman nuevos bloques de Renko
    • Actualización de los niveles de precios de los bloques en función de la cantidad de bloques que pueden soportar los cambios en el precio
    • Actualizar la dirección ((brickDir) y establecer el logo ((newBrick) para indicar la formación de un nuevo ladrillo
  3. Visualización de Renko en el gráfico de tiempo:

    • Traza bloques estilo Renko en un gráfico estándar con elementos gráficos
    • El cuadrado verde representa el bloque
    • Los cuadrados rojos representan los bloques bajistas.
    • La formación de un bloque nunca cambia ni desaparece
  4. El cambio de tendencia en varios pasos:

    • La estrategia no sólo comprueba la dirección del bloque actual, sino que también compara varios bloques históricos
    • Confirmación de un verdadero cambio de tendencia mediante la verificación de cambios en la dirección de varios bloques consecutivos

Ventajas estratégicas

Después de analizar el código en profundidad, la estrategia muestra las siguientes ventajas:

  1. Resolver el problema de la relocalización:

    • Las estrategias tradicionales de Renko funcionan bien en la retroalimentación, pero a menudo fracasan en el juego real, principalmente debido a problemas de replanteo.
    • Esta estrategia asegura que el comportamiento de Renko no cambie una vez que se forman los bloques, simulando su comportamiento en un gráfico de tiempo estándar.
    • Esto hace que los resultados sean más confiables y más parecidos a los del disco.
  2. Filtración de ruido y identificación de tendencias clara:

    • El gráfico de Renko tiene la característica de filtrar pequeñas fluctuaciones, y sólo se forman nuevos bloques cuando el precio se mueve a la cantidad predeterminada
    • Esto ayuda a identificar tendencias claras en los precios y a reducir las falsas señales.
    • Apto para buscar movimientos de precios significativos en mercados muy volátiles
  3. Verificación de señales en varios pasos:

    • La estrategia no sólo comprueba cambios en una sola dirección, sino que también verifica la dirección de varios bloques consecutivos
    • Por comparaciónbrickDir[brickSize]Con las actualesbrickDiry el nivel histórico de precios
    • El mecanismo de verificación en varios pasos reduce significativamente las señales de error
  4. Bases de las transacciones visuales:

    • Traza bloques de colores en el gráfico para visualizar la estructura de los precios
    • Las cajas verdes y rojas indican claramente la dirección del mercado
    • Las herramientas visuales ayudan a los traders a entender mejor el comportamiento del mercado
  5. Flexibilidad y personalización:

    • El tamaño de los bloques se puede ajustar por el usuario, lo que permite la optimización de las estrategias de acuerdo a los diferentes mercados y marcos de tiempo
    • El tamaño de los bloques más pequeños produce señales de negociación más frecuentes, adecuadas para el comercio a corto plazo
    • Un tamaño de bloque más grande filtra más ruido, para el seguimiento de tendencias a medio y largo plazo

Riesgo estratégico

A pesar de que la estrategia ha resuelto el problema de los rediseños, los siguientes factores de riesgo siguen existiendo:

  1. Riesgo de retraso de la señal:

    • Debido a que la estrategia solo ejecuta los cálculos en la columna de confirmación, la ejecución de la operación puede ser un poco más tardía que en el gráfico tradicional de Renko
    • En un mercado que se mueve rápidamente, los puntos de entrada pueden haber perdido el mejor precio
    • Solución: se puede considerar la combinación de otros indicadores de confirmación o ajustar el tamaño del bloque para equilibrar la puntualidad y la precisión
  2. El tamaño del bloque elige el riesgo:

    • Los bloques demasiado pequeños generan demasiadas señales de transacción, aumentan los costos de transacción y pueden conducir a una sobrecambio.
    • Los bloques demasiado grandes pueden perderse un punto de inflexión en el mercado
    • Solución: optimice el tamaño del bloque en función de la volatilidad del activo objetivo y el marco de tiempo de negociación
  3. Riesgo de una falsa señal de cambio de tendencia:

    • A pesar del uso de la verificación en varios pasos, los falsos breaks pueden ocurrir en mercados muy volátiles
    • Los precios pueden cruzar la frontera de bloques varias veces antes de que se forme una tendencia real
    • Solución: Considere la adición de filtros adicionales, como la confirmación de volumen de entrega o el indicador de movimiento
  4. Riesgo de la retirada:

    • Las estrategias de reversión de tendencia pueden generar pérdidas continuas en mercados de tendencia fuerte
    • La señal de reversión podría activarse prematuramente, lo que podría llevar a una negociación a la baja
    • Solución: Implementar un mecanismo de detención adecuado y una estrategia de gestión de posiciones
  5. Cálculo de los riesgos de los recursos:

    • El dibujo de una gran cantidad de bloques puede requerir una gran cantidad de recursos, especialmente en los marcos de tiempo largos y los grandes conjuntos de datos.
    • El código limita el número máximo de cajas a 500, lo que puede ser insuficiente en algunos casos
    • Solución: optimizar la eficiencia del código o considerar mostrar sólo los bloques N más recientes

Dirección de optimización de la estrategia

Basado en el análisis de código, las siguientes son algunas de las principales opciones de optimización de la estrategia:

  1. Optimización del tamaño del bloque dinámico:

    • Las estrategias actuales utilizan tamaños de bloques fijos, que pueden ser mejorados a tamaños de bloques dinámicos basados en la volatilidad del mercado
    • Se usan bloques más pequeños durante las bajas y más grandes durante las altas.
    • Esto mejorará la adaptabilidad de la estrategia a las diferentes condiciones del mercado.
    • Método de implementación: se puede usar ATR (la amplitud de fluctuación real) para ajustar el tamaño del bloque de forma dinámica
  2. Añadir un filtro de transacciones:

    • Combinación de volúmenes de tráfico u otros indicadores de movimiento para confirmar la señal de cambio de tendencia
    • Evitar el comercio en condiciones de baja liquidez o extrema volatilidad
    • Método de implementación: agregar condiciones de confirmación adicionales basadas en el RSI, la ruptura de la transacción o el MACD
  3. Mejora de los mecanismos de detención y ganancia:

    • Las estrategias actuales solo pueden aumentar los niveles de parada inteligente y de ganancias objetivo si se invierte la dirección.
    • Establecimiento de stop loss dinámico basado en el número de multiplicadores del tamaño del bloque
    • Método de implementación: añadirstrategy.exit()Orden para establecer un punto de parada basado en el ATR o el tamaño del bloque
  4. Mecanismos de optimización de la verificación en varios pasos:

    • La estrategia actual utiliza el fijobrickSizeMultiplicación para comparar los bloques históricos
    • Número de pasos de comparación de la historia óptima que se puede estudiar
    • Realizar un retrospectivo de diferentes mercados y marcos de tiempo para encontrar la mejor combinación de parámetros
    • Método de implementación: parametriza el número de pasos y permite al usuario personalizar la profundidad de verificación
  5. Mejora de la visibilidad y de los sistemas de alerta:

    • Aumentar las líneas de tendencia y los marcadores de nivel clave
    • Añadido una función de alerta de formación de bloques y señales de transacción
    • Indica la intensidad y duración de la tendencia actual
    • Método de implementación:label.new()yalert()Funciones que mejoran la experiencia del usuario

Resumir

La estrategia de comercio de reversión de tendencias de Renko de simulación de tendencias de reversión de Renko de múltiples pasos resuelve con éxito el problema de reversión en la estrategia tradicional de Renko, permitiendo a los operadores aplicar la lógica de Renko en el gráfico de tiempo estándar, mientras se mantiene la estabilidad de la señal histórica. La estrategia identifica el reverso de tendencias a través de un mecanismo de verificación de varios pasos, mejora la calidad de la señal y muestra visualmente la estructura del mercado a través de gráficos.

Las principales ventajas de la estrategia residen en resolver los problemas de replanteo, filtrar el ruido del mercado, la verificación de la señal en varios niveles y la representación gráfica intuitiva. Sin embargo, aún existen riesgos como el retraso de la señal, la elección del tamaño del bloque y la falsa señal. En el futuro, se puede optimizar aún más mediante la implementación del tamaño del bloque dinámico, el aumento de filtros de transacción, la mejora del mecanismo de stop loss, la optimización de los pasos de verificación y el aumento del sistema de visualización.

Este método, que combina las ventajas de los gráficos de Renko y evita sus desventajas, es especialmente adecuado para las estrategias de seguimiento de tendencias y inversiones de tendencias, y ofrece a los comerciantes una herramienta de análisis técnico confiable que puede proporcionar un rendimiento de registro real estable mientras se mantiene la precisión de la retroalimentación.

Código Fuente de la Estrategia
//@version=5
strategy("Non-Repainting Renko Emulation Strategy [PineIndicators]", overlay=true, calc_on_every_tick=false, max_boxes_count = 500, max_labels_count = 500, max_lines_count = 500, initial_capital = 10000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity, commission_value = 0.01, slippage = 2)

// Parameter: Brick-Größe (z.B. 10 Punkte)
brickSize = input.float(3.0, "Brick Size", step=0.1)

// Persistente Variablen
var float renkoPrice     = na    // Aktueller Renko-Level (Schlusswert des letzten Bricks)
var float prevRenkoPrice = na    // Vorheriger Renko-Level (für Box-Berechnung)
var int   brickDir       = 0     // 1 = Aufwärts, -1 = Abwärts
var bool  newBrick       = false // Signalisiert, dass ein neuer Brick abgeschlossen wurde
var int   brickStart     = bar_index  // Beginn des aktuellen Bricks (x-Achse)

// Berechnungen nur auf abgeschlossenen Candles
if barstate.isconfirmed
    newBrick := false
    // Initialisierung: Beim ersten Candle setzen wir den Renko-Level
    if na(renkoPrice)
        renkoPrice := close
        brickStart := bar_index
    // Berechne die Differenz zum letzten Renko-Level
    diff = close - renkoPrice
    // Prüfen, ob der Unterschied mindestens der Brick-Größe entspricht
    if math.abs(diff) >= brickSize
        // Anzahl kompletter Bricks (kann > 1 sein)
        numBricks = math.floor(math.abs(diff) / brickSize)
        prevRenkoPrice := renkoPrice
        // Aktualisieren des Renko-Levels
        renkoPrice := renkoPrice + numBricks * brickSize * math.sign(diff)
        // Brick-Richtung (konvertiere math.sign-Ergebnis in int)
        brickDir := int(math.sign(diff))
        newBrick := true

        // Bestimme die obere und untere Grenze des abgeschlossenen Bricks:
        lowLevel  = brickDir == 1 ? prevRenkoPrice : renkoPrice
        highLevel = brickDir == 1 ? renkoPrice     : prevRenkoPrice

        // Setze den Start für den nächsten Brick
        brickStart := bar_index


// Handelslogik: Einstieg/Ausstieg nur, wenn ein neuer Brick abgeschlossen wurde
if barstate.isconfirmed and newBrick
    // Bei Aufwärts-Brick: Long-Signal
    if brickDir[brickSize] < brickDir and renkoPrice[brickSize] < renkoPrice[brickSize*2] and renkoPrice < renkoPrice[brickSize] and renkoPrice[brickSize*2] < renkoPrice[brickSize*3] and strategy.position_size <= 0
        // Bestehende Short-Position schließen, falls vorhanden
        strategy.entry("Long", strategy.long)

    // Bei Abwärts-Brick: Short-Signal
    else if brickDir[brickSize] > brickDir and renkoPrice[brickSize] > renkoPrice[brickSize*2] and renkoPrice > renkoPrice[brickSize] and renkoPrice[brickSize*2] > renkoPrice[brickSize*3] and strategy.position_size >= 0
        // Bestehende Long-Position schließen, falls vorhanden
        strategy.entry("Short", strategy.short)

if barstate.isconfirmed and newBrick
    if brickDir[brickSize] < brickDir
        strategy.close("Short")

    else if brickDir[brickSize] > brickDir
        strategy.close("Long")