
Multi Timeframe MACD Strategy adalah strategi perdagangan kuantitatif yang menggunakan indikator MACD untuk melakukan pelacakan tren pada beberapa frame waktu. Strategi ini mengirimkan sinyal perdagangan dengan menghitung indikator MACD pada periode waktu yang berbeda (menit 3, 5, 15, 30 menit) untuk menentukan apakah pergerakan harga konsisten antara periode yang berbeda.
Logika inti dari strategi ini adalah menghitung MACD pada beberapa frame waktu (seperti 3 menit, 5 menit, 15 menit, dan 30 menit). Pertama, menghitung MACD pada setiap frame waktu dan menilai pergerakan harga pada frame waktu tersebut berdasarkan MACD. Kemudian menilai pergerakan harga pada beberapa frame waktu secara keseluruhan:
Dengan cara menilai tren dari waktu ke waktu, kita dapat secara efektif menyaring kebisingan pasar jangka pendek dan membuat sinyal perdagangan lebih andal.
Strategi ini memiliki keuntungan sebagai berikut:
Strategi ini juga memiliki risiko sebagai berikut:
Solusi yang sesuai:
Strategi ini dapat terus dioptimalkan dalam beberapa hal:
Multi-frame MACD strategi menggunakan indikator MACD untuk menilai tren, memungkinkan untuk mendeteksi pergerakan harga dari waktu ke waktu, dapat secara efektif memfilter kebisingan, meningkatkan kualitas sinyal. Strategi ini dapat disesuaikan dengan parameter dan aturan yang dioptimalkan, fleksibel untuk beradaptasi dengan berbagai varietas dan situasi, memiliki kepraktisan yang kuat.
/*backtest
start: 2023-10-28 00:00:00
end: 2023-11-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("[RichG] Easy MTF Strategy", overlay=false)
TF_1_time = input("3", "Timeframe 1")
TF_2_time = input("5", "Timeframe 2")
TF_3_time = input("15", "Timeframe 3")
TF_4_time = input("30", "Timeframe 4")
fastLen = input(title="Fast Length", defval=12)
slowLen = input(title="Slow Length", defval=26)
sigLen = input(title="Signal Length", defval=9)
[macdLine, signalLine, _] = macd(close, fastLen, slowLen, sigLen)
width = 5
upcolor = green
downcolor = red
neutralcolor = blue
linestyle = line
TF_1 = request.security(syminfo.tickerid, TF_1_time, open) < request.security(syminfo.tickerid, TF_1_time, close) ? true:false
TF_1_color = TF_1 ? upcolor:downcolor
TF_2 = request.security(syminfo.tickerid, TF_2_time, open) < request.security(syminfo.tickerid, TF_2_time, close) ? true:false
TF_2_color = TF_2 ? upcolor:downcolor
TF_3 = request.security(syminfo.tickerid, TF_3_time, open) < request.security(syminfo.tickerid, TF_3_time, close) ? true:false
TF_3_color = TF_3 ? upcolor:downcolor
TF_4 = request.security(syminfo.tickerid, TF_4_time, open) < request.security(syminfo.tickerid, TF_4_time, close) ? true:false
TF_4_color = TF_4 ? upcolor:downcolor
TF_global = TF_1 and TF_2 and TF_3 and TF_4
TF_global_bear = TF_1 == false and TF_2 == false and TF_3 == false and TF_4 == false
TF_global_color = TF_global ? green : TF_global_bear ? red : white
TF_trigger_width = TF_global ? 6 : width
plot(1, style=linestyle, linewidth=width, color=TF_1_color)
plot(5, style=linestyle, linewidth=width, color=TF_2_color)
plot(10, style=linestyle, linewidth=width, color=TF_3_color)
plot(15, style=linestyle, linewidth=width, color=TF_4_color)
plot(25, style=linestyle, linewidth=4, color=TF_global_color)
exitCondition_Long = TF_global_bear
exitCondition_Short = TF_global
longCondition = TF_global
if (longCondition)
strategy.entry("MTF_Long", strategy.long)
shortCondition = TF_global_bear
if (shortCondition)
strategy.entry("MTF_Short", strategy.short)
strategy.close("MTF_Long", when=exitCondition_Long)
strategy.close("MTF_Short", when=exitCondition_Short)