
Strategi ini menggabungkan kedua-dua indikator teknikal MACD dan RSI, menggunakan isyarat persilangan MACD dan isyarat overbought dan oversold RSI untuk menentukan masa perdagangan. Strategi ini juga memperkenalkan purata bergerak bertimbangan ((WMA) sebagai penilaian tambahan untuk meningkatkan kebolehpercayaan strategi.
Pusat strategi ini adalah penggunaan gabungan MACD dan RSI dua petunjuk teknikal. MACD terdiri daripada perbezaan garis cepat (rata-rata bergerak jangka pendek) dan garis perlahan (rata-rata bergerak jangka panjang), yang dapat mencerminkan perubahan trend di pasaran. Apabila garis cepat melintasi garis perlahan, membentuk garpu emas, menunjukkan trend naik, sebaliknya membentuk garpu mati, menunjukkan trend menurun.
Strategi ini menggabungkan MACD dan RSI, menggunakan penghakiman trend MACD dan penghakiman overbought dan oversold RSI, untuk menangkap masa perdagangan dengan lebih tepat. Di samping itu, strategi ini juga memperkenalkan purata bergerak bertimbangan ((WMA) sebagai penghakiman tambahan, WMA lebih mementingkan harga terkini berbanding purata bergerak biasa, yang dapat mencerminkan perubahan harga dengan lebih sensitif.
Selain itu, strategi juga menetapkan pembolehubah pelbagai bingkai masa (seperti 15 minit, 30 minit, 1 jam, 2 jam, dan lain-lain) untuk menilai perubahan trend dalam skala masa yang berbeza. Kaedah analisis pelbagai bingkai masa ini dapat membantu strategi untuk memahami trend pasaran dengan lebih menyeluruh dan meningkatkan ketepatan keputusan.
Strategi ini menggabungkan MACD dan RSI, dua petunjuk teknikal yang berkesan, dan memperkenalkan WMA sebagai penilaian tambahan, untuk membuat keputusan perdagangan dalam jangka masa 1 jam. Logik strategi jelas, mudah difahami dan dilaksanakan, dapat lebih memahami trend pasaran dan keadaan overbought dan oversold, mempunyai kebolehan tertentu. Walau bagaimanapun, strategi ini juga mempunyai beberapa batasan dan risiko, seperti keterlambatan, satu jangka masa, kekurangan kawalan risiko, dan seterusnya.
/*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")