
Strategi ini adalah strategi kombinasi yang menggunakan RSI, MACD, dan moving averages. Ini menggabungkan sinyal overbought dan oversold RSI, sensitivitas MACD, dan efek indikator dari moving averages dalam menentukan kapan harus masuk ke pasar.
Strategi ini didasarkan pada empat kriteria utama untuk membuat keputusan masuk lebih banyak:
Strategi ini akan melakukan stop loss jika dua kondisi berikut ini terpenuhi:
Dengan demikian, strategi ini dapat menghentikan kerugian pada saat keuntungan ditarik kembali, dan menghindari kerugian yang lebih besar.
Keuntungan terbesar dari strategi ini adalah kombinasi dari indikator yang digunakan, yang memanfaatkan keuntungan dari masing-masing indikator, yaitu:
Strategi ini memiliki dua risiko utama:
Resikonya lebih besar. Strategi trending seperti moving averages memiliki risiko lebih besar dari resikonya yang lebih besar. Resikonya lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari
Parameter optimasi sulit. Pengaturan dan pengoptimalan parameter strategi kombinasi multi-indikator lebih sulit. Metode pengoptimalan parameter seperti stepwise, algoritma genetik dan lain-lain dapat digunakan untuk menentukan parameter optimal.
Strategi ini dapat terus dioptimalkan dalam beberapa hal:
Menambahkan kondisi tambahan untuk memfilter lebih jauh sinyal palsu. Misalnya, kombinasi indikator volume transaksi, indikator volatilitas, dll.
Uji perbedaan pengaturan parameter dari berbagai varietas. Sesuaikan parameter untuk lebih banyak varietas.
Optimalkan pengaturan parameter moving average. Uji perbedaan parameter dengan panjang yang berbeda.
Adaptasi rata-rata bergerak digunakan dalam penelitian.
Secara keseluruhan, strategi ini adalah versi optimasi dari strategi pergerakan rata-rata dan trend tracking. Strategi ini menyerap keunggulan dari beberapa indikator utama seperti MACD, RSI, dan lain-lain. Strategi ini unik dalam menentukan waktu masuk ke pasar dan penghentian kerugian.
/*backtest
start: 2022-12-29 00:00:00
end: 2024-01-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Improved RSI MACD Strategy with Moving Averages", overlay=true)
// Inputs
src = input(close, title="RSI Source")
// RSI Settings
lengthRSI = input.int(14, minval=1)
// Stop Loss Settings
stopLossPct = input.float(0.09, title="Stop Loss Percentage")
takeProfitPct = input.float(0.15, title="Take Profit Percentage")
// MACD Settings
fastlen = input(12)
slowlen = input(26)
siglen = input(9)
// Strategy Settings
longEntry = input(0, title="Long Entry Level")
exitLevel = input(0, title="Exit Level")
// EMA Settings
emaShortLength = input(8, title="Short EMA Length")
emaLongLength = input(21, title="Long EMA Length")
atrMultiplier = input.float(2, title="atrMultiplier")
atrLength = input.int(20, title="atrLength")
// Indicators
rsi1 = ta.rsi(src, lengthRSI)
[macd, signal, hist] = ta.macd(src, fastlen, slowlen, siglen)
// Calculate EMAs
emaShort = ta.ema(src, emaShortLength)
emaLong = ta.ema(src, emaLongLength)
// Calculate ATR
atr = ta.atr(atrLength)
// Variables
var bool canEnterLong = na
// Strategy conditions
longCondition = hist > longEntry and rsi1 > 50 and emaShort > emaLong and close > emaLong + atrMultiplier * atr
// Entries and Exits
if hist < exitLevel and emaShort < emaLong
canEnterLong := true
strategy.close("Long")
// Store last entry price
var lastEntryPrice = float(na)
var lastEntryPrice2 = float(na)
if longCondition
strategy.entry("Long", strategy.long)
canEnterLong := false
lastEntryPrice := close
if lastEntryPrice < close
lastEntryPrice := close
// Calculate Stop Loss and Take Profit Levels based on last entry price
stopLossLevel = lastEntryPrice * (1 - stopLossPct)
// Check for stop loss and take profit levels and close position if triggered
if (strategy.position_size > 0)
last_buy = strategy.opentrades[0]
if (close < stopLossLevel)
strategy.close("Long", comment="Stop Loss Triggered")
if (close * (1 - takeProfitPct) > strategy.opentrades.entry_price(strategy.opentrades - 1) )
strategy.close("Long", comment="Take Profit Triggered")