
Strategi ini disebut strategi perdagangan kuantitatif dengan indikator RSI yang dikombinasikan dengan rata-rata bergerak. Strategi ini menggunakan indikator RSI dan rata-rata bergerak sebagai sinyal perdagangan, untuk mencapai strategi perdagangan kuantitatif untuk melakukan operasi reversal dalam konteks tren.
Strategi ini terutama menggunakan indikator RSI dan rata-rata bergerak cepat untuk menilai tren harga saham dan waktu pembalikan. Secara khusus, strategi ini pertama-tama menghitung rata-rata bergerak cepat (SMA) dan rata-rata bergerak lambat, yang menghasilkan sinyal beli ketika melewati rata-rata bergerak lambat di atas rata-rata bergerak cepat; menghasilkan sinyal jual ketika melewati rata-rata bergerak lambat di bawah rata-rata bergerak cepat.
Pada saat yang sama, strategi ini menghitung indikator RSI untuk menentukan apakah harga saham berada dalam keadaan overbought atau oversold. Sebelum membuka posisi, akan menilai apakah indikator RSI normal, jika RSI melebihi set threshold, penutupan posisi ditangguhkan menunggu RSI kembali dan kemudian membuka posisi. Ini dapat mencegah terjadinya overbought atau oversold. Di sisi lain, setelah memegang posisi, jika RSI melebihi set stop threshold, posisi akan dihentikan.
Dengan kombinasi RSI dan Moving Average, posisi dapat dibuka saat harga saham menghasilkan sinyal reversal; dan berhenti ketika overbought oversold, untuk mencapai strategi perdagangan kuantitatif yang menguntungkan untuk melakukan reversal dalam konteks tren harga saham.
Strategi ini memiliki keuntungan sebagai berikut:
Anda dapat secara akurat membuka posisi saat harga saham berbalik. Gunakan garpu rata-rata bergerak sebagai sinyal beli, garpu mati sebagai sinyal jual, dan Anda dapat secara akurat menangkap peluang untuk membalikkan tren harga saham.
Dengan menggunakan indikator RSI untuk menilai situasi overbought dan oversold, Anda dapat secara efektif mencegah pembentukan posisi saat harga saham bergeser dalam jangka pendek, dan menghindari kerugian yang tidak perlu.
RSI Stop dapat mengontrol posisi dalam kisaran keuntungan yang wajar dan secara efektif mengontrol risiko perdagangan.
Mudah untuk menyesuaikan parameter. Siklus SMA, parameter RSI, dan lain-lain dapat disesuaikan secara fleksibel untuk menyesuaikan dengan lingkungan pasar yang berbeda.
Efisiensi penggunaan dana yang tinggi. Anda dapat melakukan perdagangan yang sering pada fase konversi tren yang bergejolak dan memanfaatkan dana secara efektif.
Strategi ini juga memiliki risiko sebagai berikut:
Risiko kesalahan pelacakan. Rata-rata bergerak sebagai indikator penilaian tren memiliki keterlambatan tertentu, yang dapat menyebabkan waktu pembukaan posisi yang tidak akurat.
Risiko perdagangan yang sering. Dalam situasi yang bergejolak, risiko ini dapat menyebabkan terlalu sering melakukan posisi terbuka.
Risiko penyesuaian parameter. Siklus SMA dan parameter RSI memerlukan penyesuaian uji ulang untuk menyesuaikan diri dengan pasar, dan pengaturan yang tidak tepat dapat mempengaruhi kinerja strategi.
Stop loss resiko. RSI stop loss pengaturan yang tidak tepat juga dapat menyebabkan posisi keluar terlalu dini atau terus naik setelah stop loss keluar.
Strategi ini dioptimalkan sebagai berikut:
Cobalah untuk menggunakan MACD, Brinline, dan indikator lainnya yang dikombinasikan dengan RSI untuk membuat sinyal lebih akurat dan lebih dapat diandalkan.
Menambahkan algoritma pembelajaran mesin, memungkinkan parameter untuk disesuaikan secara otomatis berdasarkan data historis, mengurangi risiko pengaturan parameter.
Menambahkan mekanisme untuk mengoptimalkan strategi penutupan agar penutupan lebih cerdas dan beradaptasi dengan perubahan pasar.
Mengoptimalkan strategi manajemen posisi, mengurangi risiko dalam satu transaksi dengan menyesuaikan ukuran posisi secara dinamis.
Menggabungkan data frekuensi tinggi, menggunakan data real-time tingkat tick untuk melakukan perdagangan frekuensi tinggi, meningkatkan frekuensi strategi.
Secara keseluruhan, strategi ini menggunakan indikator RSI dan rata-rata bergerak untuk menghasilkan sinyal perdagangan, untuk mencapai strategi kuantitatif untuk melakukan operasi terbalik dalam proses operasi tren. Dibandingkan dengan penggunaan rata-rata bergerak saja, strategi ini menambahkan penilaian indikator RSI untuk secara efektif mencegah pembukaan posisi pada waktu yang tidak menguntungkan, dan dengan menghentikan RSI untuk mengendalikan risiko perdagangan, meningkatkan stabilitas strategi hingga batas tertentu. Tentu saja, strategi ini juga memiliki ruang untuk perbaikan tertentu, dan di masa depan dapat dioptimalkan dari lebih banyak kombinasi indikator, parameter pengoptimalan otomatis, manajemen posisi, dan sebagainya.
/*backtest
start: 2023-12-17 00:00:00
end: 2023-12-18 19:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//1. 做多
// a. RSI在超买区间时不开单,直到RSI回落一点再开单
// b. 已经有多仓,如果RSI超买,则平多获利,当RSI回落一点之后,再次开多,直到有交叉信号反转做空
//2. 做空
// a. RSI在超卖区间时不开单,直到RSI回落一点之后再开多单
// b. 已经有空仓,如果RSI超卖,则平空获利,当RSI回落一点之后,再开空单,直到有交叉信号反转做多
//@version=4
strategy("策略_RSI+移动揉搓线_", overlay=true)
// 输入
fastLength = input(11, minval=1)
slowLength = input(82,minval=1)
length = input(title="长度", type=input.integer, defval=14, minval=1, maxval=100)
hight_rsi = input(title="rsi超过上轨平多获利", type=input.integer, defval=80, minval=1, maxval=100)
low_rsi = input(title="rsi超过下轨平空获利", type=input.integer, defval=20, minval=1, maxval=100)
open_long_rsi_threshold = input(title="rsi低于该阈值时才开多", type=input.integer, defval=75, minval=1, maxval=100)
open_short_rsi_threshold = input(title="rsi高于该阈值时才开空仓", type=input.integer, defval=25, minval=1, maxval=100)
// 均线
sma_fast = sma(close, fastLength)
sma_slow = sma(close, slowLength)
// RSI
rsi = rsi(close, length)
//**********变量*start*******//
var long_f = false // 标记是否是均线交叉多头
var short_f = false // 标记是否是均线交叉空头
var long_open_pending = false // 标记开仓时rsi是否处于超买状态
var short_open_pending = false // 标记开仓时rsi是否处于超卖
var long_rsi_over_buy = false // 标记 多仓时 是否发生超买平多获利
var short_rsi_over_sell = false // 标记 空仓时 是否发生超卖平空获利
//**********逻辑*start*******//
// 买入
longCondition = crossover(sma_fast, sma_slow)
if (longCondition)
short_rsi_over_sell := false // 清空该标记,防止再次开空仓
long_f := true
short_f := false
if (rsi < hight_rsi)
// 并且没有超买
strategy.entry("多", long=strategy.long)
if (rsi > hight_rsi)
// 开仓时发生超买,等待rsi小于hight_rsi
long_open_pending := true
// 卖出
shortCondition = crossunder(sma_fast, sma_slow)
if (shortCondition)
long_rsi_over_buy := false //清空该标记,防止再次开多仓
long_f := false
short_f := true
if (rsi > low_rsi)
strategy.entry("空", long=strategy.short)
if (rsi < low_rsi)
// 开仓时发生超卖,等待rsi大于low_rsi
short_open_pending := true
// 等待RSI合理,买入开仓
if (long_f and long_open_pending and strategy.position_size == 0 and rsi < open_long_rsi_threshold)
strategy.entry("多", long=strategy.long)
long_open_pending := false
// 等待RSI合理,卖出开仓
if (short_f and short_open_pending and strategy.position_size == 0 and rsi > open_short_rsi_threshold)
strategy.entry("空", long=strategy.short)
short_open_pending := false
//RSI止盈(RSI超买平多)
if (strategy.position_size > 0 and long_f and rsi > hight_rsi)
strategy.close_all()
long_rsi_over_buy := true
//RSI止盈(RSI超卖平空)
if (strategy.position_size < 0 and short_f and rsi < low_rsi)
strategy.close_all()
short_rsi_over_sell := true
//RSI止盈之后,再次开多
if (long_f and long_rsi_over_buy and strategy.position_size == 0 and rsi < hight_rsi)
long_rsi_over_buy := false
strategy.entry("多", long=strategy.long)
//RSI止盈之后,再次开空
if (short_f and short_rsi_over_sell and strategy.position_size == 0 and rsi > low_rsi)
short_rsi_over_sell := false
strategy.entry("空", long=strategy.short)
//**********绘图*start*******//
p1 = plot(sma_fast, linewidth=2, color=color.green)
p2 = plot(sma_slow, linewidth=2, color=color.red)
fill(p1, p2, color=color.green)
plot(cross(sma_fast, sma_slow) ? sma_fast : na, style = plot.style_circles, linewidth = 4)
// 绘制rsi线
//plot(rsi, color=color.green, editable=true, style=plot.style_circles, linewidth=2)
// 绘制上下轨
//high_ = hline(80, title="上轨")
//low_ = hline(20, title="下轨")
//fill(high_, low_, transp=80, editable=true, title="背景")