Swing Dual Moving Average dan RSI Crossover Strategy

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

img

Strategi ini mengintegrasikan purata bergerak berganda dan penunjuk RSI untuk membina strategi perdagangan silang antara kedudukan panjang dan pendek. Ia boleh menangkap trend jangka menengah hingga panjang sambil mengelakkan perdagangan bising yang tidak perlu dengan penunjuk jangka pendek.

Logika Strategi

Strategi ini menggunakan dua set purata bergerak, yang terdiri daripada purata bergerak pantas (EMA 59 dan EMA 82) dan purata bergerak perlahan (EMA 96 dan EMA 95). Ia pergi lama apabila harga melintasi di atas EMA pantas, dan pergi pendek apabila harga melintasi di bawah EMA pantas. Sementara itu, kawasan overbought dan oversold penunjuk RSI digunakan untuk mengesahkan isyarat perdagangan dan stop-loss.

Secara khusus, apabila EMA cepat memecahkan di atas EMA perlahan, isyarat panjang dihasilkan. Jika RSI di bawah 30 (kawasan terlalu banyak dijual) pada masa ini, pergi panjang. Apabila EMA cepat memecahkan di bawah EMA perlahan, isyarat pendek dihasilkan. Jika RSI melebihi 70 (kawasan terlalu banyak dibeli) pada titik ini, pergi pendek.

Kelebihan menggunakan purata bergerak berganda adalah untuk lebih mengenali perubahan dalam trend jangka menengah hingga panjang.

Kelebihan

  • Mencatatkan trend jangka menengah hingga panjang dengan purata bergerak berganda
  • Perdagangan bunyi penapis dengan penunjuk RSI
  • Menggabungkan perdagangan trend berikut dan purata pembalikan
  • Logik yang mudah dan jelas

Analisis Risiko

  • Dalam pasaran yang sebahagian besarnya terikat julat, isyarat purata bergerak mungkin tertakluk kepada whipsaws
  • Indikator RSI juga gagal dalam keadaan pasaran tertentu
  • Penempatan Stop Loss memerlukan berhati-hati untuk mengelakkan terlalu longgar atau terlalu ketat

Kawasan Peningkatan

  • Uji gabungan purata bergerak kitaran yang lebih lama
  • Cuba penyesuaian parameter yang berbeza e.g. ambang kawasan overbought / oversold RSI
  • Tambah penapis tambahan seperti jumlah dagangan
  • Mengoptimumkan strategi stop loss, menggabungkan stop loss dinamik dengan ATR dll.

Ringkasan

Strategi ini mengintegrasikan trend berikut purata bergerak berganda dan perdagangan pembalikan purata penunjuk RSI. EMA berganda mengesan arah trend jangka menengah hingga panjang, sementara RSI mengesahkan kesahihan isyarat perdagangan dan stop loss. Ini adalah strategi persilangan yang mudah dan praktikal antara panjang dan pendek. Ia boleh disesuaikan dengan persekitaran pasaran yang berbeza melalui penyesuaian parameter dan pengoptimuman.


/*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 lanjut