
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:
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:
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 bloquesrenkoPriceEl 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 actualIdentificación de bloques de Renko sin replantear:
Visualización de Renko en el gráfico de tiempo:
El cambio de tendencia en varios pasos:
Después de analizar el código en profundidad, la estrategia muestra las siguientes ventajas:
Resolver el problema de la relocalización:
Filtración de ruido y identificación de tendencias clara:
Verificación de señales en varios pasos:
brickDir[brickSize]Con las actualesbrickDiry el nivel histórico de preciosBases de las transacciones visuales:
Flexibilidad y personalización:
A pesar de que la estrategia ha resuelto el problema de los rediseños, los siguientes factores de riesgo siguen existiendo:
Riesgo de retraso de la señal:
El tamaño del bloque elige el riesgo:
Riesgo de una falsa señal de cambio de tendencia:
Riesgo de la retirada:
Cálculo de los riesgos de los recursos:
Basado en el análisis de código, las siguientes son algunas de las principales opciones de optimización de la estrategia:
Optimización del tamaño del bloque dinámico:
Añadir un filtro de transacciones:
Mejora de los mecanismos de detención y ganancia:
strategy.exit()Orden para establecer un punto de parada basado en el ATR o el tamaño del bloqueMecanismos de optimización de la verificación en varios pasos:
brickSizeMultiplicación para comparar los bloques históricosMejora de la visibilidad y de los sistemas de alerta:
label.new()yalert()Funciones que mejoran la experiencia del usuarioLa 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.
//@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")