
Strategi ini dinamakan strategi perdagangan kuantitatif yang menggabungkan RSI dengan purata bergerak. Strategi ini menggunakan RSI dan purata bergerak sebagai isyarat perdagangan, untuk mewujudkan strategi perdagangan kuantitatif yang melakukan operasi pembalikan dalam konteks trend.
Strategi ini terutamanya menggunakan indikator RSI dan purata bergerak cepat untuk menilai trend harga saham dan masa pembalikan. Khususnya, strategi ini pertama-tama mengira purata bergerak cepat (SMA) dan purata bergerak perlahan, yang menghasilkan isyarat beli apabila bergerak perlahan melintasi rata-rata bergerak cepat di atas rata-rata bergerak cepat; menghasilkan isyarat jual apabila bergerak perlahan melintasi rata-rata bergerak cepat di bawah rata-rata bergerak cepat.
Pada masa yang sama, strategi ini mengira RSI untuk menentukan sama ada harga saham berada dalam keadaan overbought atau oversold. Sebelum membuka kedudukan, RSI akan menentukan sama ada indikatornya normal atau tidak, dan jika RSI melebihi nilai set yang ditetapkan, penutupan posisi akan ditangguhkan dan menunggu RSI kembali. Ini dapat mengelakkan penubuhan posisi pada masa yang tidak menguntungkan untuk membeli dan menjual.
Dengan menggunakan RSI dan Moving Average, anda boleh membuka kedudukan apabila harga saham menghasilkan isyarat pembalikan; dan berhenti ketika overbought dan oversold, untuk mencapai strategi perdagangan kuantitatif yang menguntungkan dalam konteks trend harga saham.
Strategi ini mempunyai kelebihan berikut:
Anda boleh membuka kedudukan dengan tepat apabila harga saham berbalik. Gunakan garpu moving average sebagai isyarat membeli, garpu mati sebagai isyarat menjual, dan anda boleh menangkap peluang untuk membalikkan trend harga saham dengan tepat.
Mengelakkan pembukaan kedudukan pada masa yang tidak baik. Dengan menilai keadaan overbought dan oversold melalui indikator RSI, anda dapat mencegah pembentukan kedudukan dengan berkesan apabila harga saham bergolak dalam jangka pendek, dan mengelakkan kerugian yang tidak perlu.
RSI Stop boleh mengawal kedudukan dalam julat keuntungan yang munasabah, dan mengawal risiko perdagangan dengan berkesan.
Mudah untuk menyesuaikan parameter. Siklus SMA, parameter RSI dan lain-lain boleh disesuaikan secara fleksibel untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.
Kecekapan penggunaan dana yang tinggi. Anda boleh berdagang dengan kerap dan menggunakan dana dengan cekap dalam tempoh kejatuhan trend.
Strategi ini juga mempunyai risiko:
Risiko Kesalahan Pemantauan. Rata-rata bergerak sebagai petunjuk trend yang agak ketinggalan, yang boleh menyebabkan masa pembukaan kedudukan tidak tepat.
Risiko perdagangan yang kerap. Dalam keadaan yang tidak menentu, ia boleh menyebabkan terlalu kerap untuk meletakkan atau menutup kedudukan.
Risiko penyesuaian parameter. Siklus SMA dan parameter RSI memerlukan penyesuaian ujian berulang untuk menyesuaikan diri dengan pasaran. Tetapan yang tidak betul boleh mempengaruhi prestasi strategi.
Risiko Hentian. Pengaturan Hentian RSI yang tidak betul juga boleh menyebabkan kedudukan keluar terlalu awal atau terus naik selepas Hentian keluar.
Strategi ini akan dioptimumkan dengan cara berikut:
Cuba gunakan MACD, Brinline dan lain-lain indikator yang digabungkan dengan RSI untuk memberi isyarat yang lebih tepat dan dipercayai.
Menambah algoritma pembelajaran mesin yang membolehkan parameter disesuaikan secara automatik berdasarkan data sejarah, mengurangkan risiko penyesuaian parameter
Menambah mekanisme pengoptimuman strategi penangguhan untuk menjadikan penangguhan lebih pintar dan menyesuaikan diri dengan perubahan pasaran.
Mengoptimumkan strategi pengurusan kedudukan, mengurangkan risiko perdagangan tunggal dengan menyesuaikan saiz kedudukan secara dinamik.
Menggabungkan data frekuensi tinggi, menggunakan data masa nyata pada tahap tick untuk perdagangan frekuensi tinggi, meningkatkan frekuensi strategi.
Secara keseluruhannya, strategi ini menggunakan indikator RSI dan purata bergerak untuk menghasilkan isyarat perdagangan, mewujudkan strategi kuantitatif untuk melakukan pengiraan terbalik semasa trend berjalan. Berbanding dengan penggunaan purata bergerak sahaja, strategi ini menambahkan penilaian indikator RSI untuk mencegah pembukaan kedudukan pada masa yang tidak baik, dan dengan menghentikan RSI untuk mengawal risiko perdagangan, meningkatkan kestabilan strategi hingga tahap tertentu.
/*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="背景")