RSI Strategi Perdagangan lintas Siklus

Penulis:ChaoZhang, Tanggal: 2023-10-25 11:20:59
Tag:

img

Gambaran umum

Strategi ini menggunakan prinsip overbought dan oversold dari indikator RSI dan menggabungkan RSI multi-siklus untuk menghasilkan sinyal, mewujudkan operasi lintas-siklus. Strategi ini menilai sinyal overbought dan oversold sesuai dengan pengaturan siklus RSI, dan menggunakan moving average RSI untuk menyaring untuk menghindari sinyal yang salah.

Logika Strategi

Strategi ini terutama menghasilkan sinyal perdagangan melalui penilaian overbought dan oversold dari indikator RSI. RSI adalah singkatan dari Relative Strength Index, rumusnya adalah: RSI = 100 - (100 / (1 + RS)), di mana RS adalah rasio keuntungan penutupan rata-rata terhadap kerugian penutupan rata-rata selama periode. Indeks RSI berkisar dari 0 hingga 100, umumnya dianggap sebagai oversold di bawah 30 dan overbought di atas 70.

Strategi menetapkan parameter tinggi sobrecompra dan parameter rendah sobreventa. Ketika RSI lebih tinggi dari sobrecompra, itu dinilai terlalu banyak dibeli. Ketika RSI lebih rendah dari sobreventa, itu dinilai terlalu banyak dijual. Nilai default sobrecompra dan sobreventa dalam strategi masing-masing 70 dan 30.

Untuk menghasilkan sinyal beli dan jual, strategi ini menggunakan garis rata-rata bergerak dari indikator RSI untuk penyaringan. Ketika RSI melintasi garis rata-rata bergerak, sinyal beli Es_compra dihasilkan. Ketika RSI melintasi di bawah garis rata-rata bergerak, sinyal jual Es_venta dihasilkan. Parameter rata-rata bergerak periodos_media default menjadi 14 periode.

Setelah menghasilkan sinyal beli dan jual, strategi ini membuka posisi untuk trading long atau short. Selain itu, strategi ini juga menetapkan stop loss dan take profit dalam persentase untuk mencegah kerugian yang berlebihan dan mengunci keuntungan.

Keuntungan dari Strategi

  1. Gunakan indikator RSI untuk menilai kondisi overbought dan oversold, menghindari mengejar high dan menjual low.

  2. Menggunakan rata-rata bergerak dari indikator RSI untuk penyaringan untuk menghindari sinyal palsu.

  3. Menggabungkan pengaturan multi-siklus dari indikator RSI untuk menghasilkan sinyal perdagangan yang lebih stabil.

  4. Atur stop loss dan mengambil keuntungan mekanisme untuk mengontrol risiko secara efektif.

  5. Logika strategi sederhana dan jelas, mudah dimengerti dan dimodifikasi.

  6. Parameter yang dapat disesuaikan, dapat disesuaikan dengan produk dan siklus yang berbeda.

Risiko dari Strategi

  1. Indikator RSI memiliki efek keterlambatan, mungkin kehilangan waktu terbaik untuk pembalikan harga.

  2. Rata-rata bergerak menyebabkan penundaan sinyal perdagangan, tidak dapat menangkap pembalikan tren tepat waktu.

  3. Pengaturan parameter overbought dan oversold yang tetap tidak cukup fleksibel, membutuhkan penyesuaian untuk siklus dan produk yang berbeda.

  4. Pengaturan stop loss dan take profit yang tidak tepat dapat menyebabkan kerugian atau kehilangan keuntungan.

  5. Posisi panjang dan pendek hanya 1 lot, tidak dapat sepenuhnya memanfaatkan dana untuk perdagangan spread.

Arahan Optimasi

  1. Menggabungkan indikator lain seperti MACD, KD untuk penilaian sinyal perdagangan.

  2. Menerapkan rata-rata bergerak adaptif untuk melacak tren.

  3. Atur parameter overbought dan oversold dinamis, sesuaikan berdasarkan volatilitas pasar.

  4. Mengoptimalkan stop loss dan mengambil algoritma keuntungan, seperti trailing stop loss.

  5. Tambahkan mekanisme manajemen posisi, menyesuaikan posisi secara dinamis berdasarkan ukuran modal.

  6. Tambahkan penyaringan tren untuk menghindari perdagangan yang sering di pasar yang terikat rentang.

  7. Backtest untuk mengoptimalkan parameter dan memilih kombinasi parameter yang optimal.

Ringkasan

Strategi ini didasarkan pada prinsip overbought dan oversold dari indikator RSI, menggunakan moving average untuk penyaringan untuk menghasilkan sinyal perdagangan, mewujudkan perdagangan lintas siklus yang khas. Strategi ini memiliki struktur logis yang jelas dan pengaturan parameter, dapat disesuaikan dengan produk dan siklus yang berbeda melalui penyesuaian parameter, menjadikannya strategi perdagangan lintas siklus yang andal dan efektif.


/*backtest
start: 2023-09-01 00:00:00
end: 2023-09-30 23:59:59
period: 3m
basePeriod: 1m
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/
// © samuelkanneman

//@version=4
strategy("RSI KANNEMAN")
//////Entrada///////
i_startTime         = input(title="Start Date Filter", defval=timestamp("01 Nov 2020 13:30 +0000"), type=input.time, tooltip="Date & time to begin trading from")
i_endTime           = input(title="End Date Filter", defval=timestamp("1 Nov 2022 19:30 +0000"), type=input.time, tooltip="Date & time to stop trading")
sobrecompra= input(70, title="Sobre Compra", type=input.integer ,minval=50, maxval=100 )
sobreventa= input(30, title="Sobre Venta", type=input.integer ,minval=0, maxval=50 )
l1=hline(sobrecompra)
l2=hline(sobreventa, color=color.purple)
periodos= input(14, title="Periodos", type=input.integer ,minval=1, maxval=50 )
periodos_media= input(14, title="Logintud media movil", type=input.integer ,minval=1, maxval=200 )
var SL =0.0
var TP=0.0
StopLoss = input(2.0, title="SL %", step=0.2)
TakeProfit = input(5.0, title="TP %", step=0.2)

//////Proceso///////

mi_rsi=rsi(close,periodos)
mm_rsi=sma(mi_rsi,periodos_media)

Es_compra= crossover(mm_rsi,sobreventa)
Es_venta= crossunder(mm_rsi,sobrecompra)

comprado= strategy.position_size > 0
vendido = strategy.position_size < 0

//time to test 
dateFilter = true
//timePeriod = time >= timestamp(syminfo.timezone, 2020, 11, 1, 0, 0)


// long

if (not comprado and Es_compra and dateFilter  )
    // realizar long
    cantidad = strategy.equity/hlc3
    strategy.entry ("compra", strategy.long , cantidad)
    SL := close*(1-(StopLoss/100))
    TP := close*(1+(TakeProfit/100))
    
if close >= TP
    strategy.close ("compra" , comment="Salto TP")  

if (comprado and Es_venta  )
    strategy.close ("compra" , comment="Sobre Venta")

if close <= SL
    strategy.close ("compra" , comment="Salto SL")
    
// short

if (not vendido and Es_venta and dateFilter  )
    // realizar short
    cantidad = strategy.equity/hlc3
    strategy.entry ("venta", strategy.short , cantidad)
    SL := close*(1+(StopLoss/100))
    TP := close*(1-(TakeProfit/100))
    
if close <= TP
    strategy.close ("venta" , comment="Salto TP")  

if (vendido and Es_compra  )
    strategy.close ("venta" , comment="Sobre Compra")

if close >= SL
    strategy.close ("venta" , comment="Salto SL")

    

    
    
   ///////Salida//////
fill(l1,l2)
plot(mi_rsi)
plot(mm_rsi, color=color.yellow)

bgcolor(Es_compra ? color.blue : na , transp=0)
bgcolor(Es_venta ? color.red : na , transp=0)


// 1d 70 22 5 4 3 15    6 meses
//1h 70 20 6 4 5 7      1 mese
//15m 70 20 5 4 4 7      1 semana


Lebih banyak