Strategi breakout dua arah RSI


Tanggal Pembuatan: 2023-11-08 12:11:03 Akhirnya memodifikasi: 2023-11-08 12:11:03
menyalin: 0 Jumlah klik: 669
1
fokus pada
1617
Pengikut

Strategi breakout dua arah RSI

Ringkasan

Strategi ini didasarkan pada desain indikator RSI yang relatif kuat, menggunakan prinsip overbought dan oversold indikator RSI untuk melakukan operasi penembusan dua arah. Berdagang di atas RSI ketika melewati garis overbought yang ditetapkan, dan berdagang di bawah RSI ketika melewati garis oversold yang ditetapkan, adalah strategi perdagangan reverse yang khas.

Prinsip Strategi

  1. Parameter RSI dihitung berdasarkan pengaturan input pengguna, termasuk panjang siklus RSI, overbought threshold, dan overbought threshold.

  2. Berdasarkan hubungan posisi garis overbought dan oversold terhadap kurva RSI, zona overbought atau zona oversold ditentukan.

  3. Ketika indikator RSI dari zona oversold menerobos garis penurunan harga yang sesuai, melakukan operasi posisi terbuka ke arah yang berlawanan. Misalnya, ketika dari zona oversold menerobos garis overbuy, menganggap bahwa harga berbalik, saat ini membuka posisi lebih banyak; dari zona oversold menerobos garis oversold, menganggap bahwa harga berbalik, saat ini membuka posisi kosong.

  4. Setelah membuka posisi, atur stop loss. Lacak stop loss dan tutup posisi jika kondisi tersebut terpenuhi.

  5. Strategi ini juga menawarkan opsi untuk menggunakan EMA sebagai filter. Hanya dengan sinyal shorting RSI, harga harus menembus EMA untuk membuka posisi.

  6. Strategi ini juga menyediakan fitur untuk hanya berdagang pada waktu perdagangan tertentu. Pengguna dapat mengatur perdagangan hanya pada waktu tertentu, dan keluar dari posisi setelah melewati waktu tersebut.

Analisis Keunggulan

  • Dengan menggunakan prinsip terobosan klasik dari indikator RSI, pengukuran kembali akan lebih efektif.
  • Fleksibel untuk mengatur overbought dan oversold threshold, menyesuaikan dengan varietas yang berbeda.
  • Anda dapat memilih untuk menggunakan sinyal filter EMA untuk menghindari seringnya posisi kosong karena getaran kecil.
  • Mendukung fitur Stop Loss Stop Stop untuk meningkatkan stabilitas strategi.
  • Dukungan untuk mengatur waktu transaksi tertentu untuk menghindari transaksi pada periode waktu yang tidak sesuai
  • Mendukung perdagangan dua arah lebih banyak, yang dapat memanfaatkan fluktuasi dua arah.

Analisis risiko

  • Indikator RSI mudah menyimpang, hanya dengan menilai indikator RSI dapat menghasilkan sinyal perdagangan yang tidak akurat. Perlu digabungkan dengan tren, rata-rata dan lain-lain.
  • Overbought dan oversold dengan setting nilai yang tidak tepat dapat menyebabkan terlalu sering atau kehilangan peluang perdagangan.
  • Stop loss yang tidak tepat dapat menyebabkan strategi yang terlalu radikal atau konservatif.
  • Penetapan filter EMA yang tidak tepat juga dapat membuat peluang perdagangan terlewat atau memfilter sinyal yang valid.

Solusi Risiko:

  • Mengoptimalkan parameter RSI, menyesuaikan parameter yang sesuai dengan varietas yang berbeda.
  • Ini adalah salah satu cara untuk menghindari sinyal yang salah, dengan menggunakan indikator tren dan lain-lain.
  • Uji dan optimalkan parameter stop loss untuk menemukan parameter optimal.
  • Uji dan optimalkan parameter EMA untuk menemukan tingkat filtrasi yang optimal.

Arah optimasi strategi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Mengoptimalkan parameter RSI, mencari kombinasi parameter terbaik dari berbagai varietas.

  2. Cobalah berbagai indikator untuk menggantikan atau menggabungkan RSI untuk membentuk sinyal penilaian yang lebih kuat. Misalnya MACD, KD, Brinks, dll.

  3. Optimalkan strategi stop loss, meningkatkan stabilitas strategi. Anda dapat mengatur stop loss bebas berdasarkan fluktuasi pasar, atau strategi dengan fungsi stop loss tracking.

  4. Optimalkan parameter filter EMA atau uji filter indikator lainnya untuk menghindari lebih jauh.

  5. Tambahkan modul penilaian tren, hindari melakukan reverse float, atau reverse float.

  6. Uji parameter waktu perdagangan yang berbeda untuk menentukan waktu mana yang sesuai untuk strategi dan waktu mana yang harus dihindari.

Meringkaskan

Strategi RSI dua arah untuk menembus strategi ini secara keseluruhan jelas, menggunakan prinsip RSI overbought oversold klasik untuk melakukan perdagangan reverse. Anda dapat memanfaatkan peluang reverse di zona overbought dan oversold, tetapi Anda dapat mengendalikan risiko dengan filter EMA dan stop loss. Dengan optimasi parameter dan modul, ruang yang lebih besar untuk optimasi, Anda dapat membuatnya menjadi strategi reverse yang lebih stabil dan andal.

Kode Sumber Strategi
/*backtest
start: 2023-10-08 00:00:00
end: 2023-11-07 00:00:00
period: 1h
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/
// © REV0LUTI0N

//@version=4

strategy("RSI Strategy", overlay=true, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash)

// Strategy Backtesting
startDate  = input(timestamp("2021-10-01T00:00:00"), type = input.time, title='Backtesting Start Date')
finishDate = input(timestamp("9999-12-31T00:00:00"), type = input.time, title='Backtesting End Date')

time_cond  = true
// Strategy

Length = input(12, minval=1)
src = input(close, title="Source")
overbought = input(70, minval=1)
oversold = input(30, minval=1)
xRSI = rsi(src, Length)
    
rsinormal = input(true, title="Overbought Go Long & Oversold Go Short")
rsiflipped = input(false, title="Overbought Go Short & Oversold Go Long")

// EMA Filter
noemafilter = input(true, title="No EMA Filter")
useemafilter = input(false, title="Use EMA Filter")
ema_length = input(defval=15, minval=1, title="EMA Length")
emasrc = input(close, title="Source")
ema = ema(emasrc, ema_length)
plot(ema, "EMA", style=plot.style_linebr, color=#cad850, linewidth=2)

//Time Restriction Settings
startendtime = input("", title='Time Frame To Enter Trades')
enableclose = input(false, title='Enable Close Trade At End Of Time Frame')
timetobuy = (time(timeframe.period, startendtime))
timetoclose = na(time(timeframe.period, startendtime))

// Stop Loss & Take Profit % Based
enablesl = input(false, title='Enable Stop Loss')
enabletp = input(false, title='Enable Take Profit')
stopTick = input(5.0, title='Stop Loss %', type=input.float, step=0.1) / 100
takeTick = input(10.0, title='Take Profit %', type=input.float, step=0.1) / 100

longStop = strategy.position_avg_price * (1 - stopTick)
shortStop = strategy.position_avg_price * (1 + stopTick)
shortTake = strategy.position_avg_price * (1 - takeTick)
longTake = strategy.position_avg_price * (1 + takeTick)

plot(strategy.position_size > 0 and enablesl ? longStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Fixed SL")
plot(strategy.position_size < 0 and enablesl ? shortStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Short Fixed SL")
plot(strategy.position_size > 0 and enabletp ? longTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Long Take Profit")
plot(strategy.position_size < 0 and enabletp ? shortTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Short Take Profit")

// Alert messages
message_enterlong  = input("", title="Long Entry message")
message_entershort = input("", title="Short Entry message")
message_closelong = input("", title="Close Long message")
message_closeshort = input("", title="Close Short message")

// Strategy Execution
if (xRSI > overbought and close > ema and time_cond and timetobuy and rsinormal and useemafilter)
    strategy.entry("Long", strategy.long, alert_message = message_enterlong)
    
if (xRSI < oversold and close < ema and time_cond and timetobuy and rsinormal and useemafilter)
    strategy.entry("Short", strategy.short, alert_message = message_entershort)
    
if (xRSI < oversold and close > ema and time_cond and timetobuy and rsiflipped and useemafilter)
    strategy.entry("Long", strategy.long, alert_message = message_enterlong)
    
if (xRSI > overbought and close < ema and time_cond and timetobuy and rsiflipped and useemafilter)
    strategy.entry("Short", strategy.short, alert_message = message_entershort)
    
if (xRSI > overbought and time_cond and timetobuy and rsinormal and noemafilter)
    strategy.entry("Long", strategy.long, alert_message = message_enterlong)
    
if (xRSI < oversold and time_cond and timetobuy and rsinormal and noemafilter)
    strategy.entry("Short", strategy.short, alert_message = message_entershort)
    
if (xRSI < oversold and time_cond and timetobuy and rsiflipped and noemafilter)
    strategy.entry("Long", strategy.long, alert_message = message_enterlong)
    
if (xRSI > overbought and time_cond and timetobuy and rsiflipped and noemafilter)
    strategy.entry("Short", strategy.short, alert_message = message_entershort)
    
if strategy.position_size > 0 and timetoclose and enableclose
    strategy.close_all(alert_message = message_closelong)
if strategy.position_size < 0 and timetoclose and enableclose
    strategy.close_all(alert_message = message_closeshort)
    
if strategy.position_size > 0 and enablesl and time_cond
    strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong)
if strategy.position_size < 0 and enablesl and time_cond
    strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)
    
if strategy.position_size > 0 and enabletp and time_cond
    strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong)
if strategy.position_size < 0 and enabletp and time_cond
    strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)