
Strategi RSI bergerak mengikut trend adalah strategi perdagangan automatik saham yang menggunakan analisis trend dan indikator overbought dan oversold pada masa yang sama. Strategi ini menggunakan purata bergerak sederhana untuk menentukan arah trend pasaran, dan menggabungkan indikator ((RSI) yang agak kuat untuk menghantar isyarat perdagangan untuk menilai dan menjejaki trend.
Strategi ini terdiri daripada tiga bahagian utama:
Penghakiman trend: mengira purata bergerak mudah 200 hari untuk trend jangka panjang, mengira purata bergerak mudah 30 dan 50 hari untuk trend jangka pendek. Apabila purata bergerak jangka pendek melintasi purata bergerak jangka panjang sebagai isyarat bullish, melintasi isyarat bearish, menilai trend jangka pendek jangka panjang di pasaran.
Pertimbangan overbought/oversold: Mengira RSI 14 hari, RSI lebih tinggi daripada 80 adalah kawasan overbought, dan lebih rendah daripada 20 adalah kawasan oversold. Isyarat perdagangan dikeluarkan apabila RSI turun dari kawasan overbought atau naik dari kawasan oversold.
Masuk dan keluar: Apabila menilai isyarat overbought dan oversold, masuklah jika sama dengan arah isyarat trend. Apabila persilangan emas berlaku antara purata bergerak jangka pendek dan jangka panjang, penilaian trend berbalik, ketika itu keluar dari posisi kosong.
Dengan strategi ini, anda boleh masuk tepat pada masanya apabila harga saham berbalik, dan dengan cara ini anda dapat menyaring sebahagian daripada perdagangan bising, dan anda boleh mengawal penarikan balik.
Strategi ini mempunyai beberapa kelebihan:
Strategi ini mempunyai beberapa risiko:
Strategi ini juga boleh dioptimumkan dalam beberapa aspek:
Strategi RSI purata bergerak yang mengikuti trend adalah strategi yang sangat praktikal secara keseluruhan, dan menggabungkan analisis trend dan indikator overbought dan oversold, memfilter ke tahap tertentu dari bunyi pasaran, menjadikan isyarat perdagangan lebih tepat dan berkesan. Dengan cara dan parameter yang terus dioptimumkan, strategi ini dapat menjadi sistem perdagangan jangka panjang yang stabil dan menguntungkan.
/*backtest
start: 2022-11-16 00:00:00
end: 2023-11-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mattehalen
// INPUT per TIMEFRAME
// 5min = Legnth = 9, Source = ohlc4,MaxLoss = 1000 TrendMA = 200, ShortMA = 4, LongMA = 10
// 30min = Legnth = 7, Source = ohlc4,MaxLoss = 1000 TrendMA = 200, ShortMA = 10, LongMA = 20
strategy("Mathias & Christer Timeframe RSI", shorttitle="M&C_RSI",overlay=true, process_orders_on_close = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
len = input(9, title="Length", type=input.integer)
src = input(ohlc4, title="Source", type=input.source)
//show4h = input(true, title="show 4h", type=input.bool)
maxLoss = input(3000)
rsiCurrent = rsi(src, len)
//rsi4h = security(syminfo.ticker, "240", rsi(src, len))
rsi4h = rsi(src, len)
//--------------------------------------------------
//MA
trendMAInput = input(200, title="trendMA", type=input.integer)
shortMAInput = input(30, title="shortMA", type=input.integer)
longMAInput = input(50, title="longMA", type=input.integer)
trendMA = ema(close,trendMAInput)
shortMA = ema(close,shortMAInput)
longMA = ema(close,longMAInput)
plot(trendMA, color=color.black, linewidth=5)
plot(shortMA, color=color.red, linewidth=2)
plot(longMA, color=color.green, linewidth=2)
bgcolor(crossunder(shortMA,longMA) ? color.black : na, transp=10)
//--------------------------------------------------
//RSI
BuySignalBarssince = barssince(rsi4h[1]<rsi4h[0] and rsi4h[1]<20)
BuySignal = (rsi4h[1]<rsi4h[0] and rsi4h[1]<20 and BuySignalBarssince[1]>10)
BuySignalOut = crossunder(longMA[1],shortMA[1])
bgcolor(BuySignal ? color.green : na, transp=70)
bgcolor(BuySignalOut ? color.green : na, transp=10)
SellSignalBarssince = barssince(rsi4h[1]>rsi4h[0] and rsi4h[1]>80)
SellSignal = (rsi4h[1]>rsi4h[0] and rsi4h[1]>80 and SellSignalBarssince[1]>10)
SellSignalOut = crossunder(shortMA[1],longMA[1])
bgcolor(SellSignal ? color.red : na, transp=70)
bgcolor(SellSignalOut ? color.red : na, transp=10)
if BuySignal
strategy.close("short", comment = "Exit short")
strategy.entry("long", true)
strategy.exit("Max Loss", "long", loss = maxLoss)
if BuySignalOut
strategy.close("long", comment = "Exit Long")
if SellSignal
// Enter trade and issue exit order on max loss.
strategy.close("long", comment = "Exit Long")
strategy.entry("short", false)
strategy.exit("Max Loss", "short", loss = maxLoss)
if SellSignalOut
// Force trade exit.
strategy.close("short", comment = "Exit short")
//--------------------------------------------------
//ATR
MyAtr = atr(10)
AtrFactor = 10
mySLBuy = close[BuySignalBarssince]
mySLSell = close[SellSignalBarssince]
plotchar(BuySignal, "BuySignal", "⬆", location.belowbar, color.lime,size =size.huge )
plotchar(BuySignalOut, "BuySignalOut", "█", location.belowbar, color.lime,size =size.small)
plotchar(SellSignal, "SellSignal", "⬇", location.abovebar ,color.red,size =size.huge)
plotchar(SellSignalOut, "SellSignalOut", "█", location.abovebar, color.red,size =size.small)