Strategi ini merekabentuk sistem perdagangan dengan fungsi trend berikut berdasarkan Julat Benar Purata (ATR) dan Indeks Kekuatan Relatif (RSI). Ia boleh mengenal pasti arah trend secara automatik dan mempunyai ciri stop loss dan mengambil keuntungan.
Hitung ATR dan RSI. ATR mencerminkan turun naik harga purata dalam tempoh. RSI mencerminkan perbandingan kuasa antara lembu dan beruang.
Apabila ATR lebih tinggi daripada purata bergerak, ia dianggap sebagai tempoh turun naik yang tinggi yang sesuai untuk perdagangan.
Apabila RSI berada di atas garisan overbought, pergi panjang. Apabila RSI berada di bawah kawasan oversold, pergi pendek.
Selepas lama, gunakan titik tinggi dikalikan dengan nisbah tetap sebagai harga stop loss yang mengikuti. Selepas pendek, gunakan titik rendah dikalikan dengan nisbah tetap sebagai harga stop loss yang mengikuti.
Ambil keuntungan mengikut nisbah keuntungan.
Penghentian kerugian boleh memaksimumkan perintah stop loss untuk mengurangkan kerugian.
RSI dapat menilai kekuatan lembu dan beruang dengan berkesan untuk mengelakkan berulang kali membuka kedudukan di pasaran yang terikat julat.
Sebagai penunjuk turun naik, ATR boleh menapis pasaran terhad julat dan hanya berdagang di pasaran yang sedang berkembang.
Rasio mengambil keuntungan dengan keuntungan boleh mengunci beberapa keuntungan.
Kedua-dua ATR dan RSI adalah penunjuk yang ketinggalan, yang boleh menyebabkan masa kemasukan lewat. Parameter boleh dioptimumkan untuk menjadikan sistem lebih sensitif.
Nisbah keuntungan dan kerugian tetap untuk stop loss dan mengambil keuntungan cenderung untuk mengoptimumkan, harus ditetapkan dengan berhati-hati berdasarkan hasil backtest.
Dalam pasaran jangkaan kitaran yang besar, ATR mungkin lebih tinggi daripada purata bergerak untuk masa yang lama, yang membawa kepada perdagangan berlebihan.
Mengoptimumkan parameter ATR dan RSI untuk menjadikan sistem lebih sensitif.
Tambah MA dan penunjuk lain untuk menentukan arah trend, elakkan memasuki pasaran yang terikat julat dengan salah.
Cuba stop loss dinamik dan mengambil nisbah keuntungan, bukannya tetapan tetap.
Pertimbangkan untuk menambah langkah kawalan saiz dagangan.
Strategi ini mengintegrasikan kelebihan penunjuk ATR dan RSI dan merancang trend yang mudah dan praktikal mengikuti sistem perdagangan. Meningkatkan lagi kestabilan sistem dengan pengoptimuman parameter dan menambah penapis. Secara keseluruhan, strategi ini mempunyai nilai praktikal yang kuat untuk perdagangan langsung.
/*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)