Renko ATR Strategi Pembalikan Trend

Penulis:ChaoZhang, Tarikh: 2024-02-01 14:30:24
Tag:

img

Ringkasan

Renko ATR Trend Reversal Strategy adalah pendekatan perdagangan yang unik yang menggunakan carta Renko bersama dengan indikator Average True Range (ATR) untuk mengenal pasti titik pembalikan trend di pasaran kewangan.

Logika Strategi

Generasi Renko Brick

Strategi ini mula-mula mengira nilai ATR dalam tempoh yang ditentukan dan menggunakan ATR ini sebagai saiz bata untuk carta Renko. Bata Renko baru ditarik apabila pergerakan harga melebihi satu ATR. Dengan cara ini, carta Renko dapat menyesuaikan diri secara automatik dengan turun naik pasaran, dengan saiz bata yang lebih besar untuk turun naik yang lebih tinggi dan saiz bata yang lebih kecil untuk tempoh turun naik yang lebih rendah.

Beli dan Jual Generasi Isyarat

Isyarat beli dihasilkan apabila harga terbuka carta Renko melintasi di bawah harga penutupan. Sebaliknya, isyarat jual dihasilkan apabila harga terbuka melintasi di atas harga penutupan. Isyarat ini menandakan titik pembalikan trend yang berpotensi.

Hentikan Kerugian dan Ambil Keuntungan

Strategi secara dinamik menetapkan tahap stop-loss dan mengambil keuntungan untuk setiap perdagangan sebagai peratusan daripada harga terbuka Renko, berdasarkan parameter input yang ditakrifkan oleh pengguna. Ini mengawal risiko dan ganjaran untuk setiap perdagangan.

Analisis Kelebihan

Menghapuskan Lukisan Baharu

Dengan mengira harga buka dan tutup secara manual, lukisan semula dihapuskan, menjadikan isyarat lebih tepat dan tepat pada masanya.

Auto-Adaptasi kepada Volatiliti

Saiz bata berasaskan ATR membolehkan strategi menyesuaikan diri secara automatik dengan keadaan turun naik pasaran yang berbeza.

Stop Loss dan Ambil Keuntungan Dinamis

Mekanisme dinamik untuk menetapkan paras stop loss dan mengambil keuntungan membolehkan kawalan risiko yang lebih baik berdasarkan turun naik pasaran.

Tampilan Carta Bersih

Carta Renko menapis bunyi pasaran dan menyediakan visual yang bersih untuk melihat pembalikan trend.

Analisis Risiko

Risiko pengoptimuman parameter

Pengguna perlu mengoptimumkan parameter seperti tempoh ATR, stop loss % dan mengambil keuntungan % untuk persekitaran pasaran yang berbeza. tetapan parameter yang buruk boleh merosot prestasi strategi.

Risiko Kejadian

Peristiwa berita utama atau siaran dasar boleh menyebabkan pergeseran cepat di luar stop loss atau mengambil tahap keuntungan, yang membawa kepada kerugian besar.

Risiko Pembalikan yang Gagal

Dalam beberapa kes, corak pembalikan yang ditandakan mungkin gagal terwujud, yang membawa kepada perdagangan yang rugi.

Peluang Peningkatan

Menggunakan Pelbagai Jangka Masa

Jangka masa yang lebih tinggi boleh digunakan untuk mengukur arah trend keseluruhan. Jangka masa yang lebih rendah boleh menapis isyarat palsu.

Menggabungkan Penunjuk Lain

Menggunakan momentum, turun naik atau penunjuk lain dalam kombinasi boleh meningkatkan kualiti isyarat dan mengelakkan isyarat palsu.

Penyesuaian Keuntungan Amalan Dinamik

Nisbah keuntungan boleh diselaraskan secara dinamik berdasarkan turun naik pasaran dan jarak antara harga kemasukan dan harga semasa.

Kesimpulan

Renko ATR Trend Reversal Strategy berjaya menggunakan carta Renko dengan penunjuk ATR untuk mengesan secara automatik titik pembalikan trend di pasaran kewangan. Kelebihan utama termasuk penghapusan lukisan semula, penyesuaian automatik terhadap perubahan turun naik, dan stop loss / mengambil keuntungan dinamik. Walau bagaimanapun, pengguna perlu berhati-hati terhadap risiko pengoptimuman parameter, risiko peristiwa dan risiko pembalikan yang gagal. Peningkatan lanjut mungkin termasuk menggunakan beberapa jangka masa, menggabungkan penunjuk lain, dan penyesuaian keuntungan 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))


Lebih lanjut