
Cette stratégie est un système de trading quantitatif sans refonte basé sur l’imitation des graphiques Renko, qui résout le problème de la refonte dans la stratégie traditionnelle Renko en simulant le comportement des blocs Renko sur un graphique de temps standard. La stratégie utilise des blocs de prix de taille fixe pour filtrer le bruit du marché, en se concentrant uniquement sur les changements de prix significatifs, tout en veillant à ce que les signaux historiques restent inchangés.
Principales caractéristiques:
Le principe central de cette stratégie est d’implémenter les fonctionnalités des blocs Renko sur un graphique de temps standard, tout en résolvant les problèmes de redessinage dans le graphique traditionnel de Renko. Le principe de fonctionnement est le suivant:
Configuration et initialisation des paramètres:
brickSize: Définition de la taille d’un bloc qui détermine la quantité de prix qui doit bouger pour qu’un nouveau bloc se formerenkoPriceLe prix de clôture du dernier bloc Renko est stocké.prevRenkoPriceLe prix de la première brique de Renko est resté au même niveau.brickDir: Suivre la direction des blocs: 1 = hausse, -1 = baissenewBrickLe symbole de Boole indique si de nouveaux blocs se sont formésbrickStart: Indice de colonne qui stocke le début du bloc actuelIdentification des blocs de Renko qui n’ont pas été redessinés:
Renko visualisé sur le graphique temporel:
Un retour en arrière en plusieurs étapes:
Après une analyse approfondie du code, la stratégie présente les avantages suivants:
Résoudre le problème de la refonte:
Filtrage du bruit et détection des tendances:
Vérification de signaux en plusieurs étapes:
brickDir[brickSize]Par rapport à l’actuelbrickDiret le niveau historique des prixBase de négociation visualisée:
Flexibilité et personnalisation:
Bien que la stratégie ait résolu le problème de la refonte, les facteurs de risque suivants demeurent:
Risque de retard de signal:
La taille du bloc choisit le risque:
Risque de retour de tendance et de faux signaux:
Les risques de retrait:
Calculer le risque des ressources:
Sur la base de l’analyse du code, voici quelques points clés d’optimisation de la stratégie:
Optimisation de la taille des blocs dynamiques:
Ajout de filtres de transaction:
Amélioration des mécanismes de prévention et de compensation:
strategy.exit()Commande qui définit un point d’arrêt basé sur l’ATR ou la taille du blocOptimiser les mécanismes de vérification en plusieurs étapes:
brickSizeLes multiples pour comparer les blocs historiquesAmélioration des systèmes de visualisation et d’alerte:
label.new()etalert()Fonctions améliorant l’expérience utilisateurLa stratégie de trading de renversement de la tendance de Renko en simulation de renversement de la tendance en plusieurs étapes résout avec succès le problème de renversement dans la stratégie traditionnelle de Renko, permettant aux traders d’appliquer la logique de Renko sur un graphique de temps standard tout en conservant la stabilité du signal historique. La stratégie reconnaît le renversement de la tendance grâce à un mécanisme de vérification en plusieurs étapes, améliore la qualité du signal et montre visuellement la structure du marché par des graphiques.
Les principaux avantages de la stratégie résident dans la résolution des problèmes de redimensionnement, le filtrage du bruit du marché, la validation de signaux à plusieurs niveaux et l’affichage graphique intuitif. Cependant, il existe toujours des risques tels que le retard du signal, le choix de la taille du bloc et les faux signaux.
Cette approche, qui combine les avantages des graphiques Renko et évite leurs inconvénients, est particulièrement adaptée aux stratégies de suivi de tendance et de revers de tendance, offrant aux traders un outil d’analyse technique fiable capable de fournir une performance stable en temps réel tout en conservant l’exactitude des relevés.
//@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")