Aliran Mengikuti Strategi Tangkapan Volatiliti RSI


Tarikh penciptaan: 2024-02-04 10:48:38 Akhirnya diubah suai: 2024-02-04 10:48:38
Salin: 0 Bilangan klik: 595
1
fokus pada
1617
Pengikut

Aliran Mengikuti Strategi Tangkapan Volatiliti RSI

Gambaran keseluruhan

Strategi tangkap ayunan RSI adalah strategi perdagangan ayunan yang menggabungkan analisis RSI, MACD, dan jumlah transaksi. Strategi ini mengiktiraf kedudukan sokongan dalam trend pasaran, dan membuka posisi terbalik apabila terdapat fenomena overbought dan oversold, dengan tujuan untuk membeli dan menjual dengan harga rendah.

Prinsip

Indeks utama strategi ini ialah RSI, MACD dan jumlah dagangan. Logiknya ialah:

  1. Menentukan sama ada RSI berada dalam julat overbought atau oversold untuk memastikan masa yang akan berbalik;

  2. Menggunakan MACD’s Gold Fork Dead Fork untuk menilai trend harga dan perubahan tenaga sebagai syarat tambahan untuk masuk;

  3. Untuk mengesan penembusan sebenar, gunakan jumlah penembusan untuk mengelakkan isyarat palsu.

Apabila ketiga-tiga syarat di atas dipenuhi secara bersamaan, isyarat perdagangan akan dikeluarkan. Arah penembusan bergantung pada arah penembusan harga. Ini dapat menyaring penembusan palsu dengan berkesan, meningkatkan kebolehpercayaan isyarat.

Kelebihan

Kelebihan terbesar strategi ini adalah pengurusan risiko yang sangat baik. Strategi ini menetapkan peraturan pengurusan wang yang ketat seperti berhenti bergerak, berhenti tetap, dan jumlah perdagangan tetap, yang dapat mengawal risiko perdagangan tunggal dengan berkesan, memastikan keselamatan dana. Selain itu, strategi ini juga menggabungkan jumlah perdagangan untuk menapis penembusan palsu dan mengelakkan perdagangan yang tidak perlu.

Risiko

Tidak ada strategi perdagangan yang dapat mengelakkan risiko pasaran sepenuhnya, dan strategi ini tidak terkecuali.

  1. Hentikan kerugian yang ditembusi. Dalam keadaan yang melampau, harga mungkin mengalami turun naik yang besar dalam sekelip mata. Jika Hentikan kerugian yang ditembusi secara langsung, kerugian besar akan dihadapi.

  2. Tetapan parameter yang tidak betul. Tetapan parameter yang tidak betul seperti RSI, MACD dan sebagainya boleh menyebabkan kualiti isyarat perdagangan menurun, menghasilkan terlalu banyak isyarat yang salah.

Untuk risiko yang disebutkan di atas, ia boleh dikurangkan dengan mengoptimumkan algoritma henti rugi, memperkenalkan henti rugi yang dikesan dan lain-lain; pada masa yang sama, parameter utama perlu diuji dan dioptimumkan berulang kali untuk memastikan ia stabil dan boleh dipercayai.

Arah pengoptimuman

Berdasarkan kerangka strategi semasa, beberapa perkara utama yang perlu dioptimumkan ialah:

  1. Menambah algoritma pembelajaran mesin untuk menjejaki pergerakan stop loss. Mengelakkan risiko penembusan stop loss

  2. Tambah lebih banyak penapis seperti Brinband, KD dan lain-lain untuk meningkatkan kualiti isyarat. Mengurangkan pertukaran balik yang tidak perlu.

  3. Mengoptimumkan strategi pengurusan dana, menyesuaikan kedudukan dalam masa nyata. Ia membolehkan anda mengawal kesan kejadian yang tidak dijangka.

  4. Menggunakan analisis data canggih untuk mencari parameter optimum secara automatik. Mengurangkan beban kerja ujian manual.

  5. Meningkatkan isyarat perdagangan berdasarkan aliran pesanan. Menggunakan data pasaran yang lebih mendalam untuk meningkatkan kesan strategi.

ringkaskan

Strategi tangkapan pergerakan RSI trend secara keseluruhan adalah strategi perdagangan garis pendek yang sangat praktikal. Ia mempertimbangkan trend pergerakan harga, dan memantau fenomena overbought dan oversold, dan disertakan dengan penapisan jumlah perdagangan, membentuk sistem perdagangan yang agak stabil.

Kod 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)