
Strategi ini adalah sistem perdagangan kuantitatif yang tidak digambarkan semula berdasarkan grafik Renko yang mensimulasikan tingkah laku blok Renko pada carta masa standard. Strategi ini menggunakan blok harga bersaiz tetap untuk menyaring kebisingan pasaran, hanya memberi perhatian kepada perubahan harga yang bermakna, sambil memastikan bahawa isyarat sejarah tidak berubah.
Ciri-ciri utama:
Prinsip teras strategi ini adalah untuk melaksanakan fungsi blok Renko pada carta masa standard, sambil menyelesaikan masalah pencitraan semula dalam carta Renko tradisional. Prinsip kerja khusus adalah seperti berikut:
Konfigurasi dan inisialisasi parameter:
brickSize: Tentukan saiz blok, menentukan berapa banyak harga mesti bergerak untuk membentuk blok barurenkoPrice: Menyimpan harga penutupan blok Renko yang telah selesaiprevRenkoPriceHarga Renko Brick pada tahap yang sama seperti harga Renko Brick sebelumnya:brickDir: Ikut arah blok ((1 = naik, -1 = turun)newBrick: Tanda Bull, menunjukkan pembentukan batu barubrickStart: Indeks lajur yang menyimpan blok semasa bermulaPengiktirafan blok Renko yang tidak dipetik semula:
Penampakan Renko pada carta masa:
Keputusan berbalik arah:
Setelah menganalisis kod secara mendalam, strategi ini menunjukkan kelebihan yang ketara:
Menyelesaikan masalah lukisan semula:
Penapisan kebisingan dan pengenalan trend yang jelas:
Pengesahan isyarat pelbagai langkah:
brickDir[brickSize]dengan semasabrickDirdan nisbah harga sejarahDasar perdagangan visual:
Fleksibiliti dan penyesuaian:
Walaupun strategi ini telah menyelesaikan masalah pencitraan semula, faktor-faktor risiko berikut masih wujud:
Risiko kelewatan isyarat:
Ukuran blok memilih risiko:
Risiko untuk membalikkan trend:
Risiko penarikan balik:
Mengira risiko sumber:
Berdasarkan analisis kod, berikut adalah beberapa penyesuaian utama untuk strategi ini:
Optimumkan saiz blok dinamik:
Menambah penapis transaksi:
Peningkatan kawalan kerugian dan keuntungan:
strategy.exit()Perintah untuk menetapkan titik henti berdasarkan ATR atau saiz blokMempertingkatkan mekanisme pengesahan pelbagai langkah:
brickSizePerkalian untuk membandingkan sejarahPeningkatan sistem penglihatan dan amaran:
label.new()danalert()Fungsi meningkatkan pengalaman penggunaStrategi perdagangan kuantitatif renko simulasi trend reversal yang tidak melukis semula strategi Renko berjaya menyelesaikan masalah melukis semula dalam strategi Renko tradisional, membolehkan peniaga menggunakan logik Renko pada carta masa standard, sambil mengekalkan kestabilan isyarat sejarah. Strategi ini mengenal pasti perubahan trend melalui mekanisme pengesahan pelbagai langkah, meningkatkan kualiti isyarat, dan menunjukkan struktur pasaran secara visual melalui grafik.
Kelebihan utama strategi adalah menyelesaikan masalah pemetaan semula, penapisan kebisingan pasaran, pengesahan isyarat bertingkat dan gambaran grafik yang intuitif. Walau bagaimanapun, terdapat risiko seperti kelewatan isyarat, pemilihan saiz blok dan isyarat palsu.
Kaedah ini menggabungkan kelebihan Renko Charts dan mengelakkan kelemahan mereka, sangat sesuai untuk strategi perdagangan trend-following dan trend-reversal, menyediakan pedagang dengan alat analisis teknikal yang boleh dipercayai yang dapat memberikan prestasi rekod yang stabil sambil mengekalkan ketepatan pengukuran.
//@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")