
Strategi Pembalikan Trend ATR (Renko ATR Trend Reversal Strategy) adalah strategi perdagangan yang unik yang bertujuan untuk menggunakan carta Renko dalam kombinasi dengan rata-rata gelombang sebenar (ATR) untuk mengenal pasti titik pembalikan trend di pasaran kewangan. Strategi ini menghilangkan masalah pencatatan lag pada carta Renko dan dapat menangkap titik pembalikan dengan tepat, memberikan isyarat yang jelas untuk keputusan perdagangan.
Strategi ini mula mengira nilai ATR dalam tempoh tertentu dan menetapkan saiz blok Renko sebagai ATR sebagai asas. Apabila harga bergerak lebih dari satu ATR, blok Renko baru digambar. Dengan cara ini, Renko dapat menyesuaikan diri dengan kadar turun naik pasaran secara automatik, menetapkan saiz blok yang lebih besar pada turun naik tinggi dan saiz blok yang lebih kecil pada turun naik rendah.
Apabila Renko membuka harga setapak di bawah harga setapak, ia menghasilkan isyarat beli; apabila Renko membuka harga setapak di atas harga setapak, ia menghasilkan isyarat jual. Isyarat-isyarat ini menandakan titik perubahan trend yang berpotensi.
Strategi ini akan menetapkan harga hentian dan harga hentian untuk setiap dagangan dengan harga pembukaan Renko sebagai harga rujukan dinamik berdasarkan peratusan hentian dan peratusan hentian yang ditakrifkan oleh pengguna, mengawal risiko dan keuntungan setiap perdagangan.
Strategi ini menghapuskan masalah penggambaran lag dengan mengira harga pembukaan dan penutupan Renko secara manual, menjadikan penjanaan isyarat lebih tepat dan tepat pada masanya.
Tetapan saiz blok Renko berdasarkan petunjuk ATR membolehkan strategi menyesuaikan diri secara automatik dengan kadar turun naik harga dalam keadaan pasaran yang berbeza.
Strategi ini menetapkan mekanisme hentian dan hentian yang dinamik untuk setiap perdagangan, yang dapat mengawal risiko mengikut tahap turun naik pasaran.
Grafik Renko itu sendiri dapat menghapuskan kebisingan pasaran dan memberikan kesan visual yang jelas dan ringkas untuk mengenal pasti perubahan trend.
Pengguna perlu mengoptimumkan parameter seperti kitaran ATR, peratusan stop loss dan peratusan stop loss untuk menyesuaikan diri dengan keadaan pasaran yang berbeza. Jika parameter tidak ditetapkan dengan betul, ia akan menyebabkan kesan strategi yang tidak baik.
Kejadian ekonomi besar atau penubuhan dasar boleh menyebabkan kenaikan harga yang cepat, yang menyebabkan paras penangguhan atau penangguhan ditembusi, menyebabkan kerugian yang lebih besar.
Dalam beberapa kes, isyarat perdagangan yang menentukan pembalikan mungkin gagal dan tidak dapat mendorong harga ke arah pembalikan, yang menyebabkan kerugian.
Anda boleh menilai trend besar pada jangka masa yang lebih tinggi, dan mengelakkan perdagangan berlawanan. Anda juga boleh menyaring isyarat palsu pada jangka masa yang lebih rendah.
Penggunaan bersama-sama dengan penunjuk dinamik, penunjuk kadar lonjakan, dan lain-lain, dapat meningkatkan kualiti isyarat dan mengelakkan isyarat yang salah.
Peratusan penangguhan boleh disesuaikan secara dinamik mengikut tahap turun naik pasaran dan jarak harga terkini dari titik masuk.
Strategi pembalikan trend berdasarkan rentang gelombang sebenar rata-rata Renko berjaya menggunakan carta Renko yang digabungkan dengan penunjuk ATR untuk mengenal pasti titik-titik perubahan secara automatik di pasaran kewangan. Strategi ini mempunyai kelebihan seperti penghapusan penggambaran belakangan, penyesuaian automatik terhadap kadar turun naik pasaran, dan penutupan berhenti yang dinamik.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title='[tradinghook] - Renko Trend Reversal Strategy', shorttitle='[tradinghook] - Renko TRS', overlay=true ,initial_capital = 100, commission_value = 0.05, default_qty_value = 5)
// INPUTS
renkoATRLength = input.int(10, minval=1, title='ATR Length')
stopLossPct = input.float(3, title='Stop Loss Percentage', step=0.1)
takeProfitPct = input.float(20, title='Take Profit Percentage', step=0.1)
startDate = input(timestamp("01 July 2023 00:00"), title="Start Date")
endDate = input(timestamp("31 Dec 2025 23:59"), title="End Date")
enableShorts = input.bool(true, title="Enable Shorts")
var float stopLossPrice = na
var float takeProfitPrice = na
atr = ta.atr(renkoATRLength)
// thanks to https://www.tradingview.com/script/2vKhpfVH-Renko-XZ/ for manually calculating renkoClose and renkoOpen in order to remove repaint
getRenkoClose() =>
p1 = 0.0
p1 := close > nz(p1[1]) + atr ? nz(p1[1]) + atr : close < nz(p1[1]) - atr ? nz(p1[1]) - atr : nz(p1[1])
p1
Renko3() =>
p3 = 0.0
p3 := open > nz(p3[1]) + atr ? nz(p3[1]) + atr : open < nz(p3[1]) - atr ? nz(p3[1]) - atr : nz(p3[1])
p3
getRenkoOpen() =>
open_v = 0.0
Br_2 = Renko3()
open_v := Renko3() != Renko3()[1] ? Br_2[1] : nz(open_v[1])
open_v
renkoOpen = getRenkoOpen()
renkoClose = getRenkoClose()
// COLORS
colorGreen = #089981
colorRed = #F23645
bgTransparency = 95
bgColorRed = color.new(colorRed, bgTransparency)
bgColorGreen = color.new(colorGreen, bgTransparency)
lineColor = renkoClose < renkoOpen ? colorRed : colorGreen
bgColor = renkoClose < renkoOpen ? bgColorRed : bgColorGreen
// PLOTS
plot(renkoOpen, title="Renko Open", style=plot.style_line, linewidth=2, color=lineColor)
bgcolor(bgColor)
// SIGNALS
isWithinTimeRange = true
buySignal = ta.crossunder(renkoOpen, renkoClose) and isWithinTimeRange
sellSignal = ta.crossover(renkoOpen, renkoClose) and isWithinTimeRange and enableShorts
if (buySignal)
stopLossPrice := renkoOpen * (1 - stopLossPct / 100)
takeProfitPrice := renkoOpen * (1 + takeProfitPct / 100)
strategy.entry("Long", strategy.long)
strategy.exit("ExitLong", "Long", stop = stopLossPrice, limit = takeProfitPrice, comment="SL: " + str.tostring(stopLossPrice) + ", TP: " + str.tostring(takeProfitPrice))
if (sellSignal)
stopLossPrice := renkoOpen * (1 + stopLossPct / 100)
takeProfitPrice := renkoOpen * (1 - takeProfitPct / 100)
strategy.entry("Short", strategy.short)
strategy.exit("ExitShort", "Short", stop = stopLossPrice, limit = takeProfitPrice, comment="SL: " + str.tostring(stopLossPrice) + ", TP: " + str.tostring(takeProfitPrice))