Swing Dual Moving Average dan RSI Crossover Strategy

Penulis:ChaoZhang, Tanggal: 2024-02-01 11:48:51
Tag:

img

Strategi ini mengintegrasikan dua indikator rata-rata bergerak dan RSI untuk membangun strategi perdagangan silang antara posisi panjang dan pendek.

Logika Strategi

Strategi ini mengadopsi dua set rata-rata bergerak, yang terdiri dari rata-rata bergerak cepat (EMA 59 dan EMA 82) dan rata-rata bergerak lambat (EMA 96 dan EMA 95).

Secara khusus, ketika EMA cepat pecah di atas EMA lambat, sinyal panjang dihasilkan. Jika RSI di bawah 30 (area oversold) pada saat ini, pergi panjang. Ketika EMA cepat pecah di bawah EMA lambat, sinyal pendek diproduksi. Jika RSI melampaui 70 (area overbought) pada titik ini, pergi pendek.

Keuntungan dari menggunakan rata-rata bergerak ganda adalah untuk lebih mengenali perubahan tren jangka menengah hingga panjang.

Keuntungan

  • Menangkap tren jangka menengah hingga panjang dengan rata-rata bergerak ganda
  • Perdagangan kebisingan filter dengan indikator RSI
  • Kombinasi perdagangan trend berikut dan rata-rata reversi
  • Logika yang sederhana dan jelas

Analisis Risiko

  • Di pasar yang sebagian besar terbatas pada kisaran, sinyal rata-rata bergerak mungkin mengalami whipsaws
  • Indikator RSI juga gagal dalam kondisi pasar tertentu
  • Penempatan stop loss membutuhkan kewaspadaan untuk menghindari terlalu longgar atau terlalu ketat

Bidang Peningkatan

  • Uji kombinasi rata-rata bergerak siklus yang lebih lama
  • Coba penyesuaian parameter yang berbeda misalnya ambang batas area overbought/oversold RSI
  • Tambahkan filter tambahan seperti volume perdagangan
  • Mengoptimalkan strategi stop loss, menggabungkan stop loss dinamis dengan ATR dll.

Ringkasan

Strategi ini mengintegrasikan tren berikut dari rata-rata bergerak ganda dan perdagangan reversi rata-rata dari indikator RSI. EMA ganda melacak arah tren jangka menengah hingga panjang, sementara RSI mengkonfirmasi validitas sinyal perdagangan dan stop loss. Ini adalah strategi silang yang sederhana dan praktis antara panjang dan pendek. Ini dapat disesuaikan dengan lingkungan pasar yang berbeda melalui penyesuaian dan optimalisasi parameter.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Swing Hull/rsi/EMA Strategy", overlay=true,default_qty_type=strategy.cash,default_qty_value=10000,scale=true,initial_capital=10000,currency=currency.USD)

//A Swing trading strategy that use a combination of indicators, rsi for target, hull for overall direction enad ema for entering the martket.
// hull ma copied from syrowof HullMA who copied from mohamed982 :) thanks both
// Performance 

n=input(title="period",defval=500)

n2ma=2*wma(close,round(n/2))
nma=wma(close,n)
diff=n2ma-nma
sqn=round(sqrt(n))

n2ma1=2*wma(close[1],round(n/2))
nma1=wma(close[1],n)
diff1=n2ma1-nma1
sqn1=round(sqrt(n))

n1=wma(diff,sqn)
n2=wma(diff1,sqn)
c=n1>n2?green:red
ma=plot(n1,color=c)



// RSi and Moving averages

length = input( 14 )
overSold = input( 70)
overBought = input( 30)
point = 0.0001
dev= 2

fastLength = input(59)
fastLengthL = input(82)
slowLength = input(96)
slowLengthL = input(95)
price = close

mafast = ema(price, fastLength)
mafastL= ema(price, fastLengthL)
maslow = ema(price, slowLength)
maslowL = ema(price, slowLengthL)
vrsi = rsi(price, length)
cShort =  (crossunder(vrsi, overBought))

condDown = n2 >= n1
condUp = condDown != true
closeLong =  (crossover(vrsi, overSold))
closeShort = cShort 


// Strategy Logic
longCondition = n1> n2
shortCondition = longCondition != true

col =condUp ? lime : condDown ? red : yellow
plot(n1,color=col,linewidth=3)


if (not na(vrsi))
    if shortCondition    
        if (price[0] < maslow[0] and price[1] > mafast[1]) //cross entry
            strategy.entry("SYS-SHORT", strategy.short, comment="short")
strategy.close("SYS-SHORT", when=closeShort) //output logic

if (not na(vrsi))
    if longCondition // swing condition          
        if (price[0] < mafast[0] and price[1] > mafast[1]) //cross entry
            strategy.entry("SYS-LONG", strategy.long, comment="long")
strategy.close("SYS-LONG", when=closeLong) //output logic


// Stop Loss 


sl = input(75)
Stop = sl * 10
Q = 100


strategy.exit("Out Long", "SYS-LONG", qty_percent=Q, loss=Stop)
strategy.exit("Out Short", "SYS-SHORT", qty_percent=Q, loss=Stop)



//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

Lebih banyak