RSI MACD Crossover Strategi Pengesanan MA Ganda

Penulis:ChaoZhang, Tarikh: 2023-10-23 17:00:44
Tag:

img

Ringkasan

Strategi ini menggabungkan penunjuk RSI, penunjuk MACD dan purata bergerak berganda untuk mencapai kesan penjejakan trend dan kedudukan dalam pasaran turun naik. Ia menggunakan penunjuk RSI untuk menilai keadaan overbought dan oversold, MACD untuk menentukan titik masuk dan keluar dengan persilangan MA yang cepat dan perlahan, dan MAs berganda untuk menapis beberapa peluang perdagangan yang bising semasa trend.

Logika Strategi

  1. Mengira penunjuk RSI untuk overbought dan oversold
  • Mengira perubahan harga trend menaik dan turun

  • Mengira RSI berdasarkan perubahan harga

  • Menentukan tahap terlalu banyak beli dan terlalu banyak jual

  1. Mengira MACD untuk persilangan
  • Mengira MA pantas, MA perlahan dan garis isyarat

  • Masuk panjang di salib emas dan keluar di salib kematian

  • Merangka situasi silang

  1. Melaksanakan penapis MA berganda
  • Mengira purata bergerak pantas dan perlahan

  • Pertimbangkan perdagangan hanya apabila MA cepat melintasi di atas MA perlahan

  • Menapis bunyi bising dan mengikuti trend

  1. Gabungkan penunjuk untuk kemasukan
  • Penapis isyarat kemasukan dengan RSI, MACD dan MA berganda

  • Meningkatkan ketepatan dan kestabilan strategi

Analisis Kelebihan

  • Gabungan pelbagai penunjuk meningkatkan ketepatan

  • Trend berikut menapis bunyi bising dan meningkatkan kestabilan

  • RSI melihat titik pembalikan yang berpotensi

  • Perpindahan MACD menyediakan isyarat kemasukan dan keluar yang mudah

  • Double MA menghapuskan kebanyakan dagangan countertrend

  • Mudah difahami dengan beberapa parameter, baik untuk belajar

Analisis Risiko

  • Risiko pemasangan berlebihan dengan beberapa penunjuk

  • MA berganda mengorbankan fleksibiliti dan mungkin kehilangan peluang

  • Parameter RSI dan MACD memerlukan pemilihan yang teliti

  • Perhatikan stop loss berdasarkan simbol

  • Memerlukan penyesuaian semula parameter secara berkala

Arahan pengoptimuman

  • Sesuaikan parameter RSI untuk simbol yang berbeza

  • Mengoptimumkan tempoh MA berganda untuk pengesanan yang lebih baik

  • Tambah stop loss untuk mengawal kerugian perdagangan tunggal

  • Masukkan lebih banyak penunjuk untuk memperkaya combo

  • Membangunkan model parameter adaptif untuk penyesuaian automatik

Ringkasan

Strategi ini menggabungkan RSI, MACD dan double MA untuk mengenal pasti dan mengesan trend, dan menapis isyarat melalui pelbagai lapisan. Ia sangat sesuai untuk pemula untuk belajar dan meningkatkan. Kelebihannya terletak pada kesederhanaan dan daya adaptasi. Penyesuaian parameter yang baik dapat menghasilkan pulangan yang mantap. Langkah seterusnya mungkin termasuk menambah lebih banyak penunjuk, membangunkan model parameter adaptif untuk mengoptimumkan automatik untuk persekitaran pasaran yang berbeza.


/*backtest
start: 2023-09-22 00:00:00
end: 2023-10-22 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

// strategy(title="RSI MACD", precision = 6, pyramiding = 1, default_qty_type = strategy.percent_of_equity, default_qty_value = 99, commission_type = strategy.commission.percent, commission_value = 0.25, initial_capital = 1000)

// Component Code Start
// Example usage:
// if testPeriod()
//   strategy.entry("LE", strategy.long)
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(2, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(7, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
// Component Code Stop

//standard rsi template
src = ohlc4, len = input(14, minval=1, title="Length")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
plot(rsi, color=#87ff1a)
band1 = hline(80)
band = hline(50)
band0 = hline(20)
fill(band1, band0, color=purple, transp=90)

//macd

fast_length = input(title="Fast Length",  defval=9)
slow_length = input(title="Slow Length",  defval=72)
signal_length = input(title="Signal Length",  defval=9)

fast_ma = sma(rsi, fast_length) 
slow_ma = sma(rsi, slow_length) 
shortma = sma(ohlc4, fast_length)
longma = sma(ohlc4, slow_length)
controlmainput = input(title = "Control MA", defval = 234)
controlma = sma(ohlc4, controlmainput)
macdx = fast_ma - slow_ma
signalx = sma(macdx, signal_length)
hist = macdx - signalx
ma_hist = shortma - controlma
macd = macdx + 50
signal = signalx + 50

plot(macd,"macd", color = fuchsia)
plot(hist,"hist", style = histogram, color = fuchsia)
//plot(ma_hist,"ma hist", style = histogram, color = orange)
plot(signal,"signal", color = white)

//input
control_buy_toggle = input(true, "Buy on crossover control MA?", type = bool)
buy_on_control = control_buy_toggle == true? true : false

//conditions
buy = buy_on_control == true? ma_hist > 0 and shortma > longma and crossover(macd,signal) or crossover(shortma, controlma) : ma_hist > 0 and shortma > longma and crossover(macd,signal)
sell = ma_hist > 0 and shortma > longma and crossunder(macd,signal)
stop = crossunder(shortma, longma) or crossunder(shortma, controlma)

plotshape(buy,"buy", shape.triangleup, location.bottom, green, size = size.tiny)
plotshape(sell,"sell", shape.triangledown, location.bottom, red, size = size.tiny)
plotshape(stop,"stop",shape.circle,location.bottom, white, size = size.tiny)

if testPeriod()
    strategy.entry("buy", true, when = buy, limit = close)
    strategy.close("buy", when = sell)
    strategy.close("buy", when = stop)
    



Lebih lanjut