Strategi ini menggabungkan indikator RSI, indikator MACD dan rata-rata bergerak ganda untuk mencapai efek pelacakan tren dan penentuan posisi di pasar volatilitas.
Menghitung perubahan harga tren naik dan turun
Menghitung RSI berdasarkan perubahan harga
Tentukan tingkat overbought dan oversold
Menghitung MA cepat, MA lambat dan garis sinyal
Masuk panjang di salib emas dan keluar di salib kematian
Menggambar situasi silang
Menghitung rata-rata bergerak cepat dan lambat
Hanya mempertimbangkan perdagangan ketika MA cepat melintasi di atas MA lambat
Menyaring kebisingan dan mengikuti tren
Sinyal masuk filter dengan RSI, MACD dan MA ganda
Meningkatkan akurasi dan stabilitas strategi
Kombinasi dari beberapa indikator meningkatkan akurasi
Tren berikut menyaring kebisingan dan meningkatkan stabilitas
RSI melihat titik pembalikan potensial
MACD crossover memberikan sinyal masuk dan keluar yang sederhana
Double MA menghilangkan sebagian besar perdagangan kontra-trend
Mudah dimengerti dengan beberapa parameter, baik untuk belajar
Risiko overfit dengan beberapa indikator
MA ganda mengorbankan fleksibilitas dan mungkin kehilangan kesempatan
Parameter RSI dan MACD perlu dipilih dengan hati-hati
Perhatikan stop loss berdasarkan simbol
Membutuhkan pengaturan ulang parameter secara berkala
Sesuaikan parameter RSI untuk simbol yang berbeda
Mengoptimalkan periode MA ganda untuk pelacakan yang lebih baik
Tambahkan stop loss untuk mengendalikan kerugian perdagangan tunggal
Masukkan lebih banyak indikator untuk memperkaya combo
Mengembangkan model parameter adaptif untuk auto-tuning
Strategi ini menggabungkan RSI, MACD dan double MA untuk mengidentifikasi dan melacak tren, dan menyaring sinyal melalui beberapa lapisan. Ini sangat cocok untuk pemula untuk belajar dan meningkatkan. Keuntungannya terletak pada kesederhanaan dan kemampuan beradaptasi. Penyetelan halus parameter dapat menghasilkan pengembalian yang stabil yang layak. Langkah selanjutnya mungkin termasuk menambahkan lebih banyak indikator, mengembangkan model parameter adaptif untuk mengoptimalkan otomatis untuk lingkungan pasar yang berbeda.
/*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)