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.
ATR dan RSI dihitung. ATR mencerminkan rata-rata pergerakan harga dalam beberapa waktu terakhir. RSI mencerminkan kontras kekuatan antara kedua belah pihak.
Ketika ATR lebih besar dari rata-rata bergerak, dianggap berada dalam periode fluktuasi tinggi, cocok untuk perdagangan.
Ketika RSI berada di atas garis overbought, Anda akan melakukan overbought; ketika RSI berada di bawah zona oversold, Anda akan melakukan short.
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.
Proyeksi laba menurun.
Pelacakan stop loss dapat memaksimalkan stop loss dan mengurangi kerugian.
RSI dapat secara efektif menilai kekuatan overhead dan menghindari pembukaan posisi berulang pada kondisi yang bergoyang.
ATR sebagai indikator volatilitas, dapat menyaring pergerakan yang bergoyang, dan hanya diperdagangkan pada tren.
Profit Ratio Stop dapat mengunci sebagian dari keuntungan.
ATR dan RSI adalah indikator keterlambatan, yang dapat menyebabkan keterlambatan titik masuk. Parameter dapat dioptimalkan dengan tepat untuk membuat sistem lebih sensitif.
Stop loss lebih mudah untuk dioptimalkan dan harus diatur dengan hati-hati.
Dalam situasi gejolak siklus besar, ATR dapat lebih besar dari rata-rata bergerak dalam jangka panjang, menyebabkan overtrading. Kondisi penyaringan lainnya dapat ditambahkan.
Optimalkan parameter ATR dan RSI untuk membuat sistem lebih sensitif.
Menambahkan indikator seperti MA untuk menentukan arah tren, menghindari kesalahan dalam situasi getaran.
Cobalah stop loss stop ratio yang dinamis, bukan yang tetap.
Pertimbangkan untuk menambahkan kontrol volume transaksi.
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.
/*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)