ATR-RSI Enhanced Trend Tracking Trading System adalah strategi perdagangan kuantitatif yang lebih tinggi yang menggabungkan julat rata-rata sebenar (ATR), indikator relatif kuat (RSI) dan purata bergerak indeks (EMA). Strategi ini menggunakan sistem amaran UT Bot sebagai teras untuk mengenal pasti peluang perdagangan yang berpotensi melalui ATR yang mengesan stop loss, penapisan RSI dan persilangan EMA. Sistem ini juga mengintegrasikan pilihan K-slide (Heikin Ashi) untuk mengurangkan kebisingan pasaran dan meningkatkan kualiti isyarat.
ATR Tracking Stop: Menggunakan ATR untuk mengira tahap stop dinamik, menyesuaikan dengan turun naik pasaran. Ini memberikan asas yang fleksibel untuk trend tracking.
Penapisan RSI: Hanya pembelian dibenarkan apabila RSI lebih tinggi daripada 50, dan penjualan dibenarkan apabila RSI lebih rendah daripada 50. Ini membantu memastikan arah perdagangan selaras dengan pergerakan pasaran keseluruhan.
EMA silang: menggunakan 1 kitaran EMA dan ATR untuk menghasilkan isyarat dagangan yang berpunca dari persilangan garisan berhenti. Ini memberikan pengesahan trend tambahan.
Pilihan Heikin Ashi: boleh memilih untuk menggunakan garis K yang licin untuk mengurangkan isyarat palsu dan meningkatkan ketepatan pengenalan trend.
Peratusan Keluar: Tetapkan tahap keuntungan dan kerugian peratusan yang tetap berdasarkan harga masuk untuk menguruskan nisbah risiko dan pulangan bagi setiap perdagangan.
Reka Bentuk Tanpa Pemetaan: Strategi menggunakan reka bentuk tanpa pemetaan untuk memastikan hasil pengesanan semula sejarah selaras dengan prestasi dagangan semasa.
Gabungan pelbagai petunjuk: Gabungan ATR, RSI dan EMA, menilai keadaan pasaran secara menyeluruh, meningkatkan kebolehpercayaan isyarat.
Pengurusan Risiko Dinamis: ATR mengesan kerugian berhenti dan menyesuaikan diri dengan turun naik pasaran, memberikan kawalan risiko yang fleksibel.
Pengesahan Trend: Penapisan RSI dan EMA bersilang berfungsi bersama untuk membantu mengesahkan trend yang kuat dan mengurangkan pecah palsu.
Fleksibiliti: Mod Heikin Ashi boleh dipilih untuk menyesuaikan diri dengan keadaan pasaran dan gaya dagangan yang berbeza.
Keluar yang tepat: Tetapan keuntungan dan kerugian berhenti berdasarkan peratusan, memastikan setiap perdagangan mempunyai strategi pengurusan risiko yang jelas.
Ciri-ciri yang tidak digambarkan semula: memastikan bahawa strategi berfungsi secara konsisten dalam pengesanan semula dan cakera, meningkatkan kredibiliti.
Automasi: reka bentuk yang sepenuhnya sistematik, mengurangkan gangguan emosi manusia, meningkatkan kecekapan pelaksanaan.
Overtrading: Isyarat palsu yang kerap berlaku dalam pasaran yang bergolak, menyebabkan overtrading dan pengikisannya.
Keterlambatan: Mungkin bertindak balas lambat pada titik perubahan trend, menjejaskan keuntungan kerana penggunaan pelbagai petunjuk.
Parameter sensitif: Kesan strategi sangat bergantung kepada parameter seperti kitaran ATR, tetapan RSI, pilihan parameter yang tidak betul boleh menyebabkan prestasi yang buruk.
Kebolehan beradaptasi pasaran: mungkin berprestasi dalam keadaan pasaran tertentu, tetapi tidak berkesan dalam keadaan lain.
Peratusan Tetap Keluar: Mungkin keluar terlalu awal dalam trend besar, terlepas peluang untuk mendapatkan lebih banyak keuntungan.
Tanda aras RSI yang dinamik: pertimbangkan untuk menyesuaikan nilai aras RSI yang dibeli dan dijual mengikut dinamik turun naik pasaran untuk menyesuaikan diri dengan tahap pasaran yang berbeza.
Analisis pelbagai kerangka masa: memperkenalkan analisis kerangka masa yang lebih lama, meningkatkan ketepatan penilaian trend.
Penyesuaian kadar turun naik: menyesuaikan saiz perdagangan dan peratusan tahap keluar mengikut nilai ATR yang dinamik untuk menyesuaikan diri dengan turun naik pasaran.
Pembelajaran Mesin Integrasi: Menggunakan algoritma pembelajaran mesin untuk mengoptimumkan pemilihan parameter dan proses penjanaan isyarat, meningkatkan kebolehpasaran strategi.
Integrasi penunjuk sentimen: Pertimbangkan untuk memasukkan penunjuk sentimen pasaran, seperti VIX atau kadar turun naik tersembunyi pilihan, untuk meningkatkan masa pasaran.
Penunjuk penyesuaian diri: membangunkan penunjuk yang dapat disesuaikan secara automatik mengikut keadaan pasaran, seperti purata bergerak penyesuaian diri.
Pecutan risiko: menerapkan kaedah pecutan risiko, membahagikan dana secara dinamik mengikut turun naik pasaran yang berbeza.
ATR-RSI Enhanced Trend Tracking Trading System adalah strategi perdagangan kuantitatif yang komprehensif yang bertujuan untuk menangkap trend yang kuat secara berterusan dengan menggabungkan pelbagai petunjuk teknikal dan teknik pengurusan risiko. Kelebihan utamanya terletak pada pengurusan risiko dinamik, pengesanan trend berganda, dan penetapan parameter yang fleksibel.
//@version=5
strategy("UT Bot Alerts - Non-Repainting with RSI Filter", overlay=true)
// Inputs
a = input.int(1, title="Key Value. 'This changes the sensitivity'")
c = input.int(10, title="ATR Period")
h = input.bool(false, title="Signals from Heikin Ashi Candles")
percentage = input.float(0.002, title="Percentage for Exit (0.2% as decimal)")
// RSI Inputs
rsiPeriod = input.int(14, title="RSI Period")
rsiSource = input.source(close, title="RSI Source")
// ATR Calculation
xATR = ta.atr(c)
nLoss = a * xATR
// Heikin Ashi Calculation
haClose = request.security(syminfo.tickerid, timeframe.period, close, lookahead=barmerge.lookahead_on)
haOpen = request.security(syminfo.tickerid, timeframe.period, open, lookahead=barmerge.lookahead_on)
haHigh = request.security(syminfo.tickerid, timeframe.period, high, lookahead=barmerge.lookahead_on)
haLow = request.security(syminfo.tickerid, timeframe.period, low, lookahead=barmerge.lookahead_on)
haCloseSeries = (haOpen + haHigh + haLow + haClose) / 4
src = h ? haCloseSeries : close
// RSI Calculation
rsiValue = ta.rsi(rsiSource, rsiPeriod)
// Non-repainting ATR Trailing Stop Calculation
var float xATRTrailingStop = na
if (barstate.isconfirmed)
xATRTrailingStop := src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), src - nLoss) : src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), src + nLoss) : src > nz(xATRTrailingStop[1], 0) ? src - nLoss : src + nLoss
// Position Calculation
var int pos = 0
if (barstate.isconfirmed)
pos := src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0) ? 1 : src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0) ? -1 : nz(pos[1], 0)
xcolor = pos == -1 ? color.red : pos == 1 ? color.green : color.blue
ema = ta.ema(src, 1)
above = ta.crossover(ema, xATRTrailingStop)
below = ta.crossover(xATRTrailingStop, ema)
// Track entry prices
var float entryPrice = na
// Buy and sell conditions with RSI filter
buy = src > xATRTrailingStop and above and barstate.isconfirmed and rsiValue > 50
sell = src < xATRTrailingStop and below and barstate.isconfirmed and rsiValue < 50
// Calculate target prices for exit
var float buyTarget = na
var float sellTarget = na
if (buy)
entryPrice := src
buyTarget := entryPrice * (1 + percentage)
sellTarget := entryPrice * (1 - percentage)
strategy.entry("Buy", strategy.long)
if (sell)
entryPrice := src
buyTarget := entryPrice * (1 + percentage)
sellTarget := entryPrice * (1 - percentage)
strategy.entry("Sell", strategy.short)
// Exit conditions
var bool buyExit = false
var bool sellExit = false
if (strategy.position_size > 0 and barstate.isconfirmed)
if (src >= buyTarget)
strategy.exit("Take Profit", "Buy", limit=buyTarget)
buyExit := true
if (src <= sellTarget)
strategy.exit("Take Profit", "Buy", limit=sellTarget)
sellExit := true
if (strategy.position_size < 0 and barstate.isconfirmed)
if (src <= sellTarget)
strategy.exit("Take Profit", "Sell", limit=sellTarget)
sellExit := true
if (src >= buyTarget)
strategy.exit("Take Profit", "Sell", limit=buyTarget)
buyExit := true
// Plotting
plotshape(buy, title="Buy", text='Buy', style=shape.labelup, location=location.belowbar, color=color.green, textcolor=color.white, size=size.tiny)
plotshape(sell, title="Sell", text='Sell', style=shape.labeldown, location=location.abovebar, color=color.red, textcolor=color.white, size=size.tiny)
barcolor(src > xATRTrailingStop ? color.green : na)
barcolor(src < xATRTrailingStop ? color.red : na)
alertcondition(buy, "UT Long", "UT Long")
alertcondition(sell, "UT Short", "UT Short")
alertcondition(buyExit, "UT Long Exit", "UT Long Exit")
alertcondition(sellExit, "UT Short Exit", "UT Short Exit")