Strategi Penangkapan Volatilitas Mengikuti Tren RSI


Tanggal Pembuatan: 2024-02-04 10:48:38 Akhirnya memodifikasi: 2024-02-04 10:48:38
menyalin: 0 Jumlah klik: 595
1
fokus pada
1617
Pengikut

Strategi Penangkapan Volatilitas Mengikuti Tren RSI

Ringkasan

Trend Riding RSI Swing Capture Strategy adalah strategi perdagangan berfluktuasi yang menggabungkan analisis RSI, MACD, dan volume transaksi. Strategi ini mengidentifikasi titik-titik dukungan dari tren pasar, dan membuka posisi terbalik ketika terjadi overbought dan oversold, dengan tujuan untuk membeli dan menjual dengan harga rendah.

Prinsip

Indikator utama strategi ini adalah RSI, MACD, dan volume transaksi. Logika spesifiknya adalah:

  1. Untuk menentukan apakah RSI berada di kisaran overbought atau oversold, untuk mengkonfirmasi waktu yang akan berbalik;

  2. Menggunakan MACD untuk menilai tren harga dan perubahan energi, sebagai syarat tambahan untuk masuk;

  3. Untuk menghindari sinyal palsu, periksa volume transaksi untuk melihat apakah itu benar-benar terjadi.

Sinyal perdagangan hanya akan dikirim jika ketiga kondisi di atas terpenuhi secara bersamaan. Arah penarikan tergantung pada arah terobosan harga. Dengan demikian, sinyal dapat disaring secara efektif untuk memfilter terobosan palsu dan meningkatkan keandalan sinyal.

Keunggulan

Keuntungan terbesar dari strategi ini adalah manajemen risiko yang luar biasa. Strategi ini menetapkan aturan manajemen dana yang ketat seperti stop loss bergerak, stop loss tetap, dan volume perdagangan tetap, yang dapat secara efektif mengendalikan risiko transaksi tunggal dan memastikan keamanan dana. Selain itu, strategi ini juga menggabungkan volume perdagangan untuk menyaring terobosan palsu dan menghindari perdagangan yang tidak perlu.

Risiko

Tidak ada strategi perdagangan yang dapat sepenuhnya menghindari risiko pasar, dan strategi ini tidak terkecuali. Risiko utama berkonsentrasi pada:

  1. Stop loss ditembus. Dalam situasi ekstrem, harga mungkin mengalami fluktuasi besar dalam sekejap. Jika stop loss ditembus secara langsung, kerugian besar akan terjadi.

  2. Parameter yang tidak tepat. Parameter yang tidak tepat seperti RSI, MACD dapat menyebabkan penurunan kualitas sinyal perdagangan, menghasilkan terlalu banyak sinyal yang salah.

Untuk risiko di atas, dapat diatasi dengan mengoptimalkan algoritma stop loss, memperkenalkan tracking stop loss, dan lain-lain. Selain itu, parameter kunci harus diuji dan dioptimalkan berulang kali untuk memastikan keandalan dan keandalan.

Arah optimasi

Berdasarkan kerangka strategi saat ini, ada beberapa hal utama yang perlu dioptimalkan:

  1. Menambahkan algoritma pembelajaran mesin untuk melakukan pelacakan dinamis stop loss. Menghindari risiko terobosan stop loss

  2. Menambahkan lebih banyak indikator penyaringan, seperti pita Brin, KD, dan lain-lain, meningkatkan kualitas sinyal. Mengurangi reversal trading yang tidak perlu.

  3. Optimalkan strategi pengelolaan dana, real-time adjustment position.

  4. Menggunakan analisis data canggih untuk mencari parameter optimal secara otomatis. Mengurangi beban pengujian manual.

  5. Meningkatkan sinyal perdagangan berdasarkan aliran pesanan. Menggunakan data pasar yang lebih dalam untuk meningkatkan efektivitas strategi.

Meringkaskan

Strategi penangkapan RSI yang berlanjut pada tren secara keseluruhan adalah strategi perdagangan garis pendek yang sangat praktis. Strategi ini mempertimbangkan tren dalam pergerakan harga, dan memperhatikan fenomena overbought dan oversold, dan kemudian bekerja sama dengan penyaringan volume perdagangan, membentuk sistem perdagangan yang relatif stabil.

Kode Sumber Strategi
/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// SwingSync RSI Strategy
// This strategy combines RSI, MACD, and volume analysis to capture swing trading opportunities.
// It includes risk management features to protect your capital.
// Adjust the input parameters and backtest to optimize performance.// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © str0zzapreti

//@version=5
strategy('SwingSync RSI', overlay=true)
// Adjustable Parameters
// var custom_message = input.string('', title='Symbol')
ma_period = input.int(20, title='Moving Average Period')
stop_loss_percent = input.float(1, title='STOP LOSS (%)',step=0.1)
macd_fast_length = input(12, title='MACD Fast Length')
macd_slow_length = input(26, title='MACD Slow Length')
macd_signal_smoothing = input(9, title='MACD Signal Smoothing')
rsi_period = input(14, title='RSI Period')
rsi_overbought = input(70, title='RSI OVERBOUGHT LEVEL')
rsi_oversold = input(30, title='RSI OVERSOLD LEVEL')
volume_ma_period = input(20, title="Volume MA Period")
volume_threshold_percent = input(50, title="Volume Threshold (%)")
slippage = 0.5
risk_per_trade = input(1, title='Risk per Trade (%)')

// Calculating Indicators *
price = close
ma = ta.sma(price, ma_period)
rsi = ta.rsi(price, rsi_period)
vol_ma = ta.sma(volume, volume_ma_period)
[macdLine, signalLine, _] = ta.macd(price, macd_fast_length, macd_slow_length, macd_signal_smoothing)
volume_threshold = vol_ma * (1 + volume_threshold_percent / 100)

// Definitions
volumeCheck = volume > volume_threshold
longRsiCheck = rsi < rsi_overbought
longMovAvgCross = ta.crossover(price, ma)
longMovAvgCheck = price > ma
longMacdCross = ta.crossover(macdLine, signalLine)
longMacdCheck = macdLine > signalLine
shortRsiCheck = rsi > rsi_oversold
shortMovAvgCross = ta.crossunder(price, ma)
shortMovAvgCheck = price < ma
shortMacdCross = ta.crossunder(macdLine, signalLine)
shortMacdCheck = macdLine < signalLine

// Entry Conditions for Long and Short Trades
longCondition = volumeCheck and longRsiCheck and ((longMovAvgCross and longMacdCheck) or (longMacdCross and longMovAvgCheck)) 
shortCondition = volumeCheck and shortRsiCheck and  ((shortMovAvgCross and shortMacdCheck) or (shortMacdCross and shortMovAvgCheck)) 

// Tracking Last Trade Day
var int last_trade_day = na

if longCondition or shortCondition
    last_trade_day := dayofweek

// Calculate can_exit_trade based on day difference
can_exit_trade = dayofweek != last_trade_day

// Entry Orders
var float max_qty_based_on_equity = na
var float qty = na

if longCondition
    max_qty_based_on_equity := strategy.equity / price
    qty := (strategy.equity * risk_per_trade / 100) / price
    if qty > max_qty_based_on_equity
        qty := max_qty_based_on_equity
    strategy.entry('Long', strategy.long, 1)

if shortCondition
    max_qty_based_on_equity := strategy.equity / price
    qty := (strategy.equity * risk_per_trade / 100) / price
    if qty > max_qty_based_on_equity
        qty := max_qty_based_on_equity
    strategy.entry('Short', strategy.short, 1)

// Exit Conditions
exitLongCondition = ta.crossunder(price, ma) or rsi > rsi_overbought
exitShortCondition = ta.crossover(price, ma) or rsi < rsi_oversold

// Calculate take profit and stop loss levels
stopLossLevelLong = strategy.position_avg_price * (1 - stop_loss_percent / 100)
stopLossLevelShort = strategy.position_avg_price * (1 + stop_loss_percent / 100)

// Adjust for slippage
adjusted_stop_loss_long = stopLossLevelLong * (1 + slippage / 100)
adjusted_stop_loss_short = stopLossLevelShort * (1 - slippage / 100)

// Strategy Exit Orders for Long Positions
if strategy.position_size > 0 and can_exit_trade
    if (close < adjusted_stop_loss_long)
        strategy.close('Long', comment='Stop Loss Long')
    if exitLongCondition
        strategy.close('Long', comment='Exit Long')

// Strategy Exit Orders for Short Positions
if strategy.position_size < 0 and can_exit_trade
    if (close > adjusted_stop_loss_short)
        strategy.close('Short', comment='Stop Loss Short')
    if exitShortCondition
        strategy.close('Short', comment='Exit Short')

plot(ma)