
Idea teras strategi ini adalah menggabungkan RSI dan purata bergerak, mencari peluang untuk membalikkan harga saham, dan mencapai pembelian rendah. Apabila RSI menunjukkan bahawa saham berada dalam keadaan oversold, dan apabila harga bergerak di bawah purata bergerak jangka pendek, sebagai isyarat membeli; setelah menetapkan stop loss dan berhenti, tunggu harga berbalik naik.
Strategi ini terutamanya menggunakan RSI untuk menentukan overbought dan oversold, dan garisan berganda rata-rata bergerak untuk menentukan trend harga. Khususnya, RSI dapat menentukan dengan berkesan sama ada saham oversold atau overbought. Apabila RSI di bawah 30, ia berada dalam ruang oversold.
Oleh itu, apabila indikator RSI berada di bawah 40, iaitu berhampiran dengan keadaan oversold, dan harga bergerak di bawah rata-rata pergerakan pada hari ke-9, ia boleh dilihat sebagai masa harga saham mungkin berbalik, melakukan pembelian lebih banyak. Kemudian menetapkan hentian kerugian dan berhenti untuk keluar, menunggu harga saham berbalik ke atas.
Strategi ini menggabungkan RSI dengan purata bergerak untuk menentukan masa yang tepat untuk membeli. Ia menambah penghakiman syarat untuk purata bergerak dan mengelakkan pergerakan di kawasan oversold berbanding dengan penilaian oversold secara tunggal. Pengaturan stop loss adalah fleksibel dan boleh berbeza-beza dari orang ke orang.
Strategi ini bergantung pada parameter seperti RSI judgment threshold, moving average time window, dan lain-lain. Parameter yang berbeza mungkin membawa kepada hasil yang berbeza. Dalam keadaan pasaran tertentu, ia masih mungkin untuk menghentikan kerugian.
Selain itu, kos urus niaga juga akan memberi kesan kepada keuntungan. Pada masa akan datang, anda boleh mempertimbangkan untuk menambah modul pengurusan jumlah urus niaga atau wang untuk pengoptimuman.
Anda boleh mempertimbangkan untuk menyesuaikan parameter purata bergerak secara dinamik, memilih parameter yang berbeza untuk kitaran yang berbeza; atau memperkenalkan penilaian indikator lain, seperti KDJ, MACD, dan lain-lain, untuk membentuk penilaian gabungan pelbagai syarat.
Anda juga boleh membina modul pengurusan jumlah dagangan atau wang untuk mengawal peratusan wang yang digunakan dalam satu transaksi dan mengurangkan kesan kerugian tunggal.
Secara keseluruhannya, strategi ini menggunakan indikator RSI dan purata bergerak untuk menentukan masa pembelian, dapat menilai harga yang berbalik dengan berkesan, dan membeli ketika oversold, untuk mendapatkan kadar kejayaan yang lebih tinggi. Dengan menggabungkan stop loss untuk mengunci keuntungan, anda dapat memperoleh kesan yang lebih baik.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-24 23:59:59
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Coinrule
//@version=4
strategy(shorttitle='MARSI',title='Moving Average', overlay=true, initial_capital=1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
//Backtest dates
fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12)
fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31)
fromYear = input(defval = 2020, title = "From Year", type = input.integer, minval = 1970)
thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12)
thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31)
thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970)
showDate = input(defval = true, title = "Show Date Range", type = input.bool)
start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window
window() => true
//MA inputs and calculations
inshort=input(9, title='MA short period')
MAshort= sma(close, inshort)
// RSI inputs and calculations
lengthRSI = input(14, title = 'RSI period', minval=1)
RSI = rsi(close, lengthRSI)
//Entry
strategy.entry(id="long", long = true, when = MAshort<close and RSI<40 and window())
//Exit
longLossPerc = input(title="Long Stop Loss (%)",
type=input.float, minval=0.0, step=0.1, defval=1.5) * 0.01
longTakePerc = input(title="Long Take Profit (%)",
type=input.float, minval=0.0, step=0.1, defval=3) * 0.01
longSL = strategy.position_avg_price * (1 - longLossPerc)
longTP = strategy.position_avg_price * (1 + longTakePerc)
if (strategy.position_size > 0 and window())
strategy.exit(id="TP/SL", stop=longSL, limit=longTP)
bgcolor(color = showDate and window() ? color.gray : na, transp = 90)
plot(MAshort, color=color.purple, linewidth=4)