Strategi Perdagangan Mengikuti Tren Berdasarkan ATR dan RSI


Tanggal Pembuatan: 2023-10-09 15:18:10 Akhirnya memodifikasi: 2023-10-09 15:18:10
menyalin: 0 Jumlah klik: 1027
1
fokus pada
1617
Pengikut

Ringkasan

Strategi ini didasarkan pada rata-rata real volatility ((ATR) dan indeks relative strength ((RSI) yang dirancang untuk sistem perdagangan dengan fungsi pelacakan tren. Sistem ini dapat secara otomatis mengidentifikasi arah tren dan memiliki fungsi stop loss dan stop loss.

Prinsip Strategi

  1. ATR dan RSI dihitung. ATR mencerminkan rata-rata pergerakan harga dalam beberapa waktu terakhir. RSI mencerminkan kontras kekuatan antara kedua belah pihak.

  2. Ketika ATR lebih besar dari rata-rata bergerak, dianggap berada dalam periode fluktuasi tinggi, cocok untuk perdagangan.

  3. Ketika RSI berada di atas garis overbought, Anda akan melakukan overbought; ketika RSI berada di bawah zona oversold, Anda akan melakukan short.

  4. Setelah melakukan over, hitunglah stop loss dengan perkalian rasio tetap pada titik tinggi. Setelah melakukan over, hitunglah stop loss dengan perkalian rasio tetap pada titik rendah.

  5. Proyeksi laba menurun.

Analisis Keunggulan

  1. Pelacakan stop loss dapat memaksimalkan stop loss dan mengurangi kerugian.

  2. RSI dapat secara efektif menilai kekuatan overhead dan menghindari pembukaan posisi berulang pada kondisi yang bergoyang.

  3. ATR sebagai indikator volatilitas, dapat menyaring pergerakan yang bergoyang, dan hanya diperdagangkan pada tren.

  4. Profit Ratio Stop dapat mengunci sebagian dari keuntungan.

Analisis risiko

  1. ATR dan RSI adalah indikator keterlambatan, yang dapat menyebabkan keterlambatan titik masuk. Parameter dapat dioptimalkan dengan tepat untuk membuat sistem lebih sensitif.

  2. Stop loss lebih mudah untuk dioptimalkan dan harus diatur dengan hati-hati.

  3. Dalam situasi gejolak siklus besar, ATR dapat lebih besar dari rata-rata bergerak dalam jangka panjang, menyebabkan overtrading. Kondisi penyaringan lainnya dapat ditambahkan.

Arah optimasi

  1. Optimalkan parameter ATR dan RSI untuk membuat sistem lebih sensitif.

  2. Menambahkan indikator seperti MA untuk menentukan arah tren, menghindari kesalahan dalam situasi getaran.

  3. Cobalah stop loss stop ratio yang dinamis, bukan yang tetap.

  4. Pertimbangkan untuk menambahkan kontrol volume transaksi.

Meringkaskan

Strategi ini mengintegrasikan keunggulan dari kedua indikator ATR dan RSI, merancang sistem perdagangan pelacakan tren yang sederhana dan praktis. Dengan mengoptimalkan parameter dan menambahkan kondisi penyaringan, stabilitas sistem dapat ditingkatkan lebih lanjut. Secara keseluruhan, strategi ini memiliki nilai aplikasi yang kuat di pasar.

Kode Sumber Strategi
/*backtest
start: 2023-09-08 00:00:00
end: 2023-10-08 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// © liwei666
//@version=5
// # ========================================================================= #
// #                   |   Strategy  |
// # ========================================================================= #
strategy(
 title                = "ATR_RSI_Strategy v2[liwei666]",
 shorttitle           = "ATR_RSI_Strategy",
 overlay              =  true,
 max_lines_count                 =  500, 
 max_labels_count                =  500, 
 max_boxes_count                 =  500,
 max_bars_back = 5000,
 initial_capital = 10000,
 default_qty_type=strategy.percent_of_equity, 
 default_qty_value=50, commission_type=strategy.commission.percent, pyramiding=1, 
 commission_value=0.05
 )
// # ========================================================================= #
// #                   |   Strategy  |
// # ========================================================================= #

atr_length = input.int(26, "atr_length", minval = 6, maxval = 100, step=1)
atr_ma_length = input.int(45, "atr_ma_length", minval = 6, maxval = 100, step=1)
rsi_length = input.int(15, "rsi_length", minval = 6, maxval = 100, step=1)
rsi_entry = input.int(10, "rsi_entry", minval = 6, maxval = 100, step=1)
atr_ma_norm_min = input.float(0.3, "atr_ma_norm_min", minval = 0.1, maxval = 0.5, step=0.1)
atr_ma_norm_max = input.float(0.7, "atr_ma_norm_max", minval = 0.5, maxval = 1, step=0.1)
trailing_percent= input.float(1.5, "trailing_percent", minval = 0.1, maxval = 2, step=0.1)

var rsi_buy = 50 + rsi_entry
var rsi_sell = 50 - rsi_entry

sma_norm_h_45() => 
    source = high
    n = 45
    sma = ta.sma(source, n) 
    sma_norm = (sma - ta.lowest(sma, n)) / (ta.highest(sma,n) - ta.lowest(sma, n))
    sma_norm

atr_value = ta.atr(atr_length)
atr_ma = ta.sma(atr_value, atr_ma_length) 
rsi_value = ta.rsi(close, length = rsi_length) 
atr_ma_norm = atr_ma / close * 100
sma_norm = sma_norm_h_45()

var intra_trade_high = 0.0
var intra_trade_low = 0.0

if strategy.position_size == 0
    intra_trade_high := high
    intra_trade_low := low

    if atr_ma_norm >= atr_ma_norm_min and atr_ma_norm <= atr_ma_norm_max
        if atr_value > atr_ma
            if rsi_value > rsi_buy
                strategy.entry("B1", strategy.long, limit = close + 5 )
            else if rsi_value < rsi_sell
                strategy.entry("S1", strategy.short, limit = close - 5 )
else if strategy.position_size > 0
    intra_trade_high := math.max(intra_trade_high, high)
    intra_trade_low := low

    long_tp = intra_trade_high * (1 - trailing_percent / 100)
    strategy.exit("Exit B1", from_entry="B1", stop = long_tp, limit = strategy.position_avg_price * 1.03)

else if strategy.position_size < 0
    intra_trade_high := high
    intra_trade_low := math.min(intra_trade_low, low) 

    short_tp = intra_trade_low * (1 + trailing_percent / 100)
    strategy.exit("Exit S1", from_entry="S1", stop = short_tp, limit = strategy.position_avg_price * 0.94)