Strategi ini menggabungkan RSI dan moving average untuk bias tren dan menambahkan trailing stops untuk manajemen risiko.
Logika Strategi:
Hitung RSI untuk menilai tingkat overbought/oversold. RSI di atas 50 menandakan bullishness.
Menghitung rata-rata bergerak cepat dan lambat, salib emas sinyal bull trend.
Peningkatan RSI yang konsisten juga menandakan masuk panjang.
Setelah masuk, tetapkan stop loss dan ambil garis keuntungan.
Stop loss trail di bawah harga, ambil profit trail di atas.
Keluar saat harga berhenti atau mengambil keuntungan.
Keuntungan:
RSI menghindari mengejar atas dan bawah.
Rata-rata bergerak mengidentifikasi arah tren, kombinasi meningkatkan akurasi.
Trailing Stops/Profit menyesuaikan secara dinamis dengan harga.
Risiko:
RSI dan MAs rentan terhadap sinyal palsu di pasar yang bervariasi.
Lebar penghentian belakang membutuhkan kalibrasi yang bijaksana, terlalu lebar atau terlalu sempit bermasalah.
Tidak dapat membatasi ukuran kerugian, risiko kehilangan perdagangan besar.
Singkatnya, strategi ini menggabungkan RSI dan MAs kemudian menggunakan trailing stops untuk manajemen risiko.
/*backtest start: 2022-09-06 00:00:00 end: 2023-09-12 00:00:00 period: 4d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("RSI and MA Strategy with Trailing Stop Loss and Take Profit", overlay=true, initial_capital=1000, process_orders_on_close=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1) showDate = input(defval=true, title='Show Date Range') timePeriod = time >= timestamp(syminfo.timezone, 2022, 1, 1, 0, 0) notInTrade = strategy.position_size <= 0 //==================================Buy Conditions============================================ //RSI length = input(14) rsi = ta.rsi(close, length) buyCondition1 = rsi > 50 //MA SMA9 = ta.sma(close, 9) SMA50 = ta.sma(close, 50) SMA100 = ta.sma(close, 100) plot(SMA9, color = color.green) plot(SMA50, color = color.orange) plot(SMA100, color = color.blue) buyCondition2 = SMA9 > SMA50//ta.crossover(SMA9, SMA100) //RSI Increase increase = 5 buyCondition3 = (rsi > rsi[1] + increase) if (buyCondition1 and buyCondition2 and buyCondition3 and timePeriod) //and buyCondition strategy.entry("Long", strategy.long) //==================================Sell Conditions============================================ //Trailing Stop Loss and Take Profit longTrailPerc = input.float(title='Trail Long Loss (%)', minval=0.0, step=0.1, defval=2) * 0.01 shortTrailPerc = input.float(title='Trail Short Loss (%)', minval=0.0, step=0.1, defval=1) * 0.01 longStopPrice = 0.0 shortStopPrice = 0.0 longStopPrice := if strategy.position_size > 0 stopValue = close * (1 - longTrailPerc) math.max(stopValue, longStopPrice[1]) else 0 shortStopPrice := if strategy.position_size < 0 stopValue = close * (1 + shortTrailPerc) math.min(stopValue, shortStopPrice[1]) else 999999 strategy.exit(id="Exit", stop = longStopPrice, limit = shortStopPrice)