
Strategi ini menggabungkan dua indikator teknis MACD dan RSI, menggunakan sinyal silang MACD dan sinyal overbought dan oversold RSI untuk menentukan waktu perdagangan. Strategi ini juga memperkenalkan rata-rata bergerak berbobot ((WMA) sebagai penilaian tambahan untuk meningkatkan keandalan strategi. Strategi ini berjalan dalam kerangka waktu 1 jam, ketika MACD muncul dengan garpu emas dan RSI lebih besar dari 50 untuk membuka lebih banyak posisi, dan ketika MACD muncul dengan garpu mati dan RSI lebih kecil dari 50 untuk membuka posisi kosong.
Inti dari strategi ini adalah penggunaan gabungan dari dua indikator teknis MACD dan RSI. MACD terdiri dari perbedaan antara garis cepat (rata-rata bergerak jangka pendek) dan garis lambat (rata-rata bergerak jangka panjang), yang dapat mencerminkan perubahan tren pasar. Ketika garis cepat melewati garis lambat, garpu emas terbentuk, menunjukkan tren naik, sebaliknya, garpu mati terbentuk, menunjukkan tren turun.
Strategi ini menggabungkan MACD dan RSI, menggunakan penilaian tren MACD dan penilaian overbought dan oversold RSI, untuk menangkap waktu perdagangan dengan lebih akurat. Selain itu, strategi ini juga memperkenalkan weighted moving average (WMA) sebagai penilaian tambahan, WMA lebih mementingkan harga terkini daripada rata-rata bergerak biasa, dan dapat mencerminkan perubahan harga dengan lebih sensitif.
Selain itu, strategi juga mengatur variabel dari beberapa kerangka waktu (seperti 15 menit, 30 menit, 1 jam, 2 jam, dll.) untuk menilai perubahan tren di berbagai skala waktu. Metode analisis kerangka waktu ini dapat membantu strategi untuk lebih memahami tren pasar secara menyeluruh dan meningkatkan akurasi keputusan.
Strategi ini menggunakan kombinasi MACD dan RSI, dua indikator teknis yang efektif, dan memperkenalkan WMA sebagai penilaian tambahan, untuk membuat keputusan perdagangan dalam kerangka waktu 1 jam. Logika strategi jelas, mudah dipahami dan diterapkan, dapat lebih memahami tren pasar dan kondisi overbought dan oversold, memiliki beberapa kelayakan. Namun, strategi ini juga memiliki beberapa keterbatasan dan risiko, seperti keterlambatan, kerangka waktu tunggal, kurangnya kontrol risiko, dan lain-lain.
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Improved MACD and RSI Trading Strategy", overlay=true, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.01, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// MACD 設置
fast_length = input(12, title="MACD Fast Length")
slow_length = input(26, title="MACD Slow Length")
signal_smoothing = input(9, title="MACD Signal Smoothing")
// RSI 設置
input_rsi_length = input.int(14, title="RSI Length")
input_rsi_source = input(close, "RSI Source")
RSI = ta.rsi(input_rsi_source, input_rsi_length)
// 計算MACD和信號線
[macdLine, signalLine, _] = ta.macd(close, fast_length, slow_length, signal_smoothing)
// 自然交易理論:利用MACD和RSI的結合
ma(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
maTypeInput = input.string("SMA", title="Moving Average Type", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="MA Settings")
maLengthInput = input.int(14, title="Moving Average Length", group="MA Settings")
macdMA = ma(macdLine, maLengthInput, maTypeInput)
// 設置交易信號
longCondition = ta.crossover(macdLine, signalLine) and macdLine > macdMA and RSI < 70
shortCondition = ta.crossunder(macdLine, signalLine) and macdLine < macdMA and RSI > 30
// 定義時間框架
tf_15m = ta.change(RSI, 15) > 0 ? 1 : 0
tf_30m = ta.change(RSI, 30) > 0 ? 1 : 0
tf_1h = ta.change(RSI, 60) > 0 ? 1 : 0
tf_2h = ta.change(RSI, 120) > 0 ? 1 : 0
tf_4h = ta.change(RSI, 240) > 0 ? 1 : 0
tf_6h = ta.change(RSI, 360) > 0 ? 1 : 0
tf_8h = ta.change(RSI, 480) > 0 ? 1 : 0
tf_12h = ta.change(RSI, 720) > 0 ? 1 : 0
tf_1d = ta.change(RSI, 1440) > 0 ? 1 : 0
// 設置開倉、平倉和空倉條件
if (longCondition and tf_1h and RSI > 50)
strategy.entry("Long", strategy.long)
if (shortCondition and tf_1h and RSI < 50)
strategy.entry("Short", strategy.short)
if (tf_1h and RSI > 70)
strategy.close("Long")
if (tf_1h and RSI < 30)
strategy.close("Short")
// 加入其他策略
// 定義加權平均價格
wma(source, length) =>
wma = 0.0
sum = 0.0
sum_wts = 0.0
for i = 0 to length - 1
wts = (length - i) * (length - i)
sum := sum + source[i] * wts
sum_wts := sum_wts + wts
wma := sum / sum_wts
wmaLength = input.int(20, title="WMA Length", group="Other Strategies")
wmaValue = wma(close, wmaLength)
// 設置交易信號
longWMACondition = close > wmaValue
shortWMACondition = close < wmaValue
if (longWMACondition and tf_1h and RSI > 50)
strategy.entry("Long WMA", strategy.long)
if (shortWMACondition and tf_1h and RSI < 50)
strategy.entry("Short WMA", strategy.short)
if (tf_1h and RSI > 70)
strategy.close("Long WMA")
if (tf_1h and RSI < 30)
strategy.close("Short WMA")
// 繪製MACD和RSI
plot(macdLine, color=color.blue, title="MACD Line")
plot(signalLine, color=color.red, title="Signal Line")