Strategi ini menggabungkan indikator RSI dan moving averages, untuk menilai tren dan menghasilkan sinyal perdagangan, dan menggunakan stop loss mobile untuk mengunci keuntungan dan mengendalikan risiko.
Prinsip-prinsip Strategi:
Perhitungan indikator RSI untuk menilai overbought dan oversold. RSI di atas 50 adalah sinyal multihead.
Perhitungan rata-rata bergerak cepat dan lambat, bentuk golden cross sebagai sinyal multihead.
RSI yang terus meningkat juga bisa menjadi sinyal perdagangan yang harus dilacak.
Setelah masuk, atur Stop Loss Line dan Stop Loss Line.
Stop loss line tetap di bawah harga, stop loss line tetap di atas harga.
Jika harga mencapai batas stop loss, maka harga akan merata.
Keuntungan dari strategi ini:
Indeks RSI menilai overbought dan oversold, menghindari mengejar high dan low.
Moving average mengidentifikasi arah tren. Kombinasi meningkatkan akurasi penilaian.
Stop loss yang bergerak dapat disesuaikan dengan perubahan harga secara real-time.
Bahaya dari strategi ini:
Indikator RSI dan garis rata-rata cenderung menghasilkan sinyal yang salah dalam situasi goyah.
Stop loss yang bergerak harus diatur dengan hati-hati, terlalu besar atau terlalu kecil dapat menimbulkan masalah.
Tidak dapat membatasi ukuran kerugian tunggal, ada risiko kerugian besar.
Singkatnya, strategi ini menyatukan keunggulan RSI dan rata-rata indikator, dan menggunakan stop loss bergerak untuk manajemen risiko. Tingkatkan parameter optimasi dan kontrol risiko, untuk mendapatkan hasil yang lebih baik.
/*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)