
RSI overbought overbought zone dynamic breakout quantification strategy adalah sistem perdagangan berdasarkan indeks relatif lemah ((RSI) yang memberi tumpuan kepada menangkap perubahan dinamik pasaran dan harga yang melangkaui. Inti strategi ini adalah untuk mengenal pasti kawasan overbought dan oversold dengan penunjuk RSI yang disesuaikan, menggabungkan EMA dan penapis SMA untuk meningkatkan kualiti isyarat, dan menerapkan tingkap masa yang ketat dan had perdagangan harian untuk mengawal risiko.
Prinsip utama strategi ini adalah untuk menangkap penembusan RSI dari kawasan neutral ke kawasan overbought atau oversold, yang biasanya menandakan perubahan trend harga yang berpotensi. Ia dilaksanakan seperti berikut:
Pengiraan RSI yang diselaraskan: Mengurangkan nilai RSI 14 kitaran standard dengan 50, menjadikan indikator berayun antara -50 dan +50, dengan garis sifar sebagai titik rujukan neutral.
Tetapan had dinamik: Tetapkan nilai pusat dan julat turun naik yang berbeza mengikut trend pasaran, secara automatik menyesuaikan isyarat yang mencetuskan nilai rendah dalam persekitaran bull dan bear.
Logik penjanaan isyarat:
Pengurusan urus niagaStrategi: hanya dijalankan dalam tempoh perdagangan yang ditetapkan (default 9:30 hingga 16:00 EST) dan boleh ditetapkan jumlah maksimum transaksi setiap hari (default 5 kali).
Kawalan Risiko: Menggunakan titik berhenti tetap berdasarkan unit turun naik terkecil (default 50 Ticks) dan titik berhenti pilihan (default 30 Ticks).
Beradaptasi dengan keadaan pasaran: Melalui SMA200 membahagikan pasaran lembu dan lembu, secara dinamik menyesuaikan titik pusat penurunan RSI, supaya strategi dapat menyesuaikan diri dengan keadaan pasaran yang berbeza.
Mekanisme penapisan berbilangGabungan penapisan dinamik EMA dan penapisan trend SMA200 meningkatkan kualiti isyarat dengan ketara dan mengurangkan penembusan palsu.
Pengurusan masa yang ketatMenetapkan tetingkap masa perdagangan, mengelakkan masa pembukaan dan penutupan yang mempunyai turun naik pasaran yang tinggi, dan memberi tumpuan kepada masa pasaran yang paling cair.
Kawalan pendedahan risikoIa juga boleh digunakan untuk membekalkan wang tunai kepada pelabur yang tidak mempunyai wang tunai.
Sistem maklum balas visual: Menyediakan status pasaran dan pemantauan prestasi secara intuitif melalui tiang harga berkod warna dan panel perdagangan visual.
Konfigurasi parameter yang fleksibel: Semua parameter utama boleh disesuaikan dengan pilihan input untuk menyesuaikan strategi dengan pelbagai jenis perdagangan dan tempoh masa.
Bahaya penembusan palsuPenembusan RSI boleh menyebabkan isyarat palsu, terutamanya di pasaran menyusun secara mendatar. Penyelesaian adalah dengan menambah syarat pengesahan, seperti pengesahan bentuk harga atau pengesahan jumlah perdagangan.
Risiko yang terlalu optimum: Tetapan parameter berganda boleh menyebabkan data sejarah yang terlalu sesuai. Ia disyorkan untuk melakukan retesting dalam keadaan pasaran yang berbeza untuk mencari kombinasi parameter yang mantap.
Pergantungan persekitaran pasaranStrategi ini mungkin lebih baik daripada pasaran yang bergolak dalam pasaran yang kuat. Sebelum digunakan, anda harus menilai keadaan pasaran semasa, menyesuaikan parameter atau menghentikan perdagangan jika perlu.
Had Stop Loss Tetap: Stop loss yang tetap berdasarkan Ticks mungkin tidak sesuai untuk semua keadaan pasaran. Pertimbangkan untuk menggunakan stop loss yang dinamik berdasarkan turun naik, seperti ATR.
Batasan waktu tetingkap: Jendela waktu dagangan yang ketat mungkin terlepas peluang dagangan yang berkualiti di luar waktu. Anda boleh mempertimbangkan untuk menetapkan jendela dagangan yang berbeza untuk pasaran yang berbeza.
Pengoptimuman DinamikStrategi semasa menggunakan julat turun naik yang tetap ((± 2), boleh mempertimbangkan untuk menyesuaikan julat ini secara dinamik berdasarkan turun naik pasaran (seperti ATR) untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.
Penapis berfluktuasiMenambah syarat penapisan turun naik berdasarkan ATR dan mengelakkan dagangan apabila turun naik terlalu rendah, yang membantu mengurangkan isyarat palsu di pasaran setapak.
Pengesahan pelbagai kitaran masa: Pengujian isyarat RSI yang mengintegrasikan beberapa tempoh masa, menghasilkan isyarat perdagangan dan meningkatkan kualiti isyarat hanya apabila arah RSI beberapa tempoh masa adalah sama.
Mekanisme pengesahan jumlah transaksiTermasuk syarat kuantiti dagangan, yang memerlukan harga untuk meletup dengan peningkatan jumlah dagangan, meningkatkan kebolehpercayaan isyarat.
Mekanisme kunci keuntungan: Mempunyai Hentian Keterusan Dinamis, menyesuaikan kedudukan hentian secara automatik apabila harga bergerak ke arah yang menguntungkan, mengunci sebahagian keuntungan.
Pengoptimuman kemasukanMenambah keadaan struktur pasaran (seperti tahap sokongan / rintangan), masuk hanya apabila harga kritikal pecah, meningkatkan kadar kemenangan.
Parameter penyesuaianMekanisme untuk menyesuaikan panjang RSI dan kitaran EMA secara automatik berdasarkan keadaan pasaran, menjadikan strategi lebih fleksibel.
Strategi kuantitatif pergerakan rentas rentas rentas RSI adalah sistem perdagangan yang tersusun dengan baik, menggabungkan rentas rentas rentas RSI, penapisan trend dan pengurusan risiko yang ketat, memberikan pedagang alat yang berkesan untuk menangkap perubahan dinamik pasaran. Strategi ini unik dalam mekanisme penyesuaian penurunan nilai dinamiknya, yang dapat menghasilkan piawaian isyarat yang disesuaikan secara automatik mengikut trend pasaran keseluruhan.
Mekanisme penapisan pelbagai strategi dan peraturan perdagangan yang ketat secara berkesan mengurangkan isyarat palsu, sementara konfigurasi parameter yang fleksibel membolehkan ia menyesuaikan diri dengan pelbagai jenis perdagangan dan keadaan pasaran. Walau bagaimanapun, pengguna harus menyedari batasan yang wujud dalam strategi penembusan RSI, terutama dalam prestasi di pasaran melintang.
Kestabilan dan kesesuaian strategi ini dapat ditingkatkan lagi melalui arah pengoptimuman yang disyorkan, seperti penyesuaian nilai terhad dinamik, pengesahan kitaran masa berbilang dan penapisan turun naik. Secara keseluruhannya, ini adalah kerangka strategi yang menyeimbangkan kualiti isyarat dan kawalan risiko yang sesuai untuk digunakan oleh peniaga jangka pendek dan menengah dalam operasi seharian.
/*backtest
start: 2025-04-21 00:00:00
end: 2025-04-28 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy('RSI SR OB Breakouts Strategy PRO (coffeshopcrypto)', overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=15, max_bars_back=200, max_boxes_count=200, precision=2)
// === Inputs ===
show_hide_boxes = input.bool(true, 'Show Ranges')
show_hide_orderblocks = input.bool(true, 'Show Orderblocks')
use_breakout_colors = input.bool(true, title="Use Breakout Bar Colors")
rsi_len = input.int(14, title="RSI Length", minval=4, group="Risk Management")
// --- Risk Management ---
takeProfitPoints = input.int(50, title="Take Profit (Ticks)", group="Risk Management")
useStopLossMode = input.bool(false, title="Use Stop Loss Instead of Only TP?", group="Risk Management")
stopLossPoints = input.int(30, title="Stop Loss (Ticks)", group="Risk Management")
// --- Time Preferences ---
startTradeHour = input.int(9, title="Trading Start Hour (EST)", minval=0, maxval=23, group="Time Preferences")
startTradeMinute = input.int(30, title="Trading Start Minute (EST)", minval=0, maxval=59, group="Time Preferences")
endTradeHour = input.int(16, title="Trading End Hour (EST)", minval=0, maxval=23, group="Time Preferences")
endTradeMinute = input.int(0, title="Trading End Minute (EST)", minval=0, maxval=59, group="Time Preferences")
// --- Trade Limit Preferences ---
useTradeLimit = input.bool(true, title="Enable Daily Trade Limit?", group="Trade Limit")
maxTradesPerDay = input.int(5, title="Max Trades Per Day", minval=1, group="Trade Limit")
// --- EMA Adjustable ---
ema_filter_enabled = input.bool(true, "Use EMA Filter?")
ema_length = input.int(50, "EMA Length", minval=2)
ema_dynamic = ta.ema(close, ema_length)
// --- SMA150 Trend Filter ---
sma200 = ta.sma(close, 150)
useBullishSettings = close > sma200
// --- Trading Panel Toggle ---
showPanel = input.bool(true, "Show Session Trading Panel?", group="Display Settings")
// === Trade Time Check (EST Time) ===
tradeAllowed = (hour > startTradeHour or (hour == startTradeHour and minute >= startTradeMinute)) and
(hour < endTradeHour or (hour == endTradeHour and minute <= endTradeMinute))
// === Trade Limit Check ===
var int tradeCount = 0
newDay = ta.change(dayofmonth) != 0
if newDay
tradeCount := 0
canTrade = tradeAllowed and (not useTradeLimit or tradeCount < maxTradesPerDay)
// === Calculate RSI and thresholds ===
rsi_up = ta.rma(math.max(ta.change(close), 0), rsi_len)
rsi_down = ta.rma(-math.min(ta.change(close), 0), rsi_len)
_rsi = rsi_down == 0 ? 100 : rsi_up == 0 ? 0 : 100 - 100 / (1 + rsi_up / rsi_down)
adjustedRSI = _rsi - 50
bullish_center = 5
bearish_center = -5
spread = 2
auto_rsi_center = useBullishSettings ? bullish_center : bearish_center
momentum_upper_threshold = auto_rsi_center + spread
momentum_lower_threshold = auto_rsi_center - spread
pricebarColor = adjustedRSI > momentum_upper_threshold ? color.rgb(37, 155, 41) : adjustedRSI < momentum_lower_threshold ? color.rgb(223, 48, 48) : color.gray
// === Signal Conditions ===
longCondition = adjustedRSI > momentum_upper_threshold and (not ema_filter_enabled or close > ema_dynamic)
shortCondition = adjustedRSI < momentum_lower_threshold and (not ema_filter_enabled or close < ema_dynamic)
// === Fresh Triggers Only ===
var bool longTrigger = false
var bool shortTrigger = false
longTrigger := longCondition and not longCondition[1]
shortTrigger := shortCondition and not shortCondition[1]
// === Trade Management with Reversals ===
var int winsToday = 0
var int lossesToday = 0
if (canTrade)
if (longTrigger)
if (strategy.position_size < 0)
strategy.close("Short", comment="Reverse to Long")
if (strategy.position_size <= 0)
strategy.entry("Long", strategy.long)
tradeCount += 1
if (shortTrigger)
if (strategy.position_size > 0)
strategy.close("Long", comment="Reverse to Short")
if (strategy.position_size >= 0)
strategy.entry("Short", strategy.short)
tradeCount += 1
// === Attach Exits After Entry ===
if (strategy.position_size > 0)
longTakeProfit = strategy.position_avg_price + (takeProfitPoints * syminfo.mintick)
longStopLoss = strategy.position_avg_price - (stopLossPoints * syminfo.mintick)
if useStopLossMode
strategy.exit("Long Exit", from_entry="Long", limit=longTakeProfit, stop=longStopLoss)
else
strategy.exit("Long TP Only", from_entry="Long", limit=longTakeProfit)
if (strategy.position_size < 0)
shortTakeProfit = strategy.position_avg_price - (takeProfitPoints * syminfo.mintick)
shortStopLoss = strategy.position_avg_price + (stopLossPoints * syminfo.mintick)
if useStopLossMode
strategy.exit("Short Exit", from_entry="Short", limit=shortTakeProfit, stop=shortStopLoss)
else
strategy.exit("Short TP Only", from_entry="Short", limit=shortTakeProfit)
// === Track wins/losses ===
if (strategy.closedtrades > 0)
if (strategy.closedtrades.profit(strategy.closedtrades - 1) > 0)
winsToday += 1
else
lossesToday += 1
// === Auto Close all trades if time window ended ===
if (not tradeAllowed)
strategy.close_all(comment="Session End Auto Close")
// === Plotting ===
plot(adjustedRSI, title="Adjusted RSI", color=color.rgb(255, 235, 59))
plot(ema_dynamic, title="Dynamic EMA", color=color.blue)
plot(sma200, title="SMA 200", color=color.gray)
hline(0, color=color.white)
barcolor(use_breakout_colors ? pricebarColor : na)
// === Trading Panel ===
if showPanel
label.new(x=bar_index, y=high, text="Wins: " + str.tostring(winsToday) + " | Losses: " + str.tostring(lossesToday), color=color.black, style=label.style_label_left, size=size.small)