Multi Timeframe MACD Strategy adalah strategi perdagangan kuantitatif yang mengesan trend menggunakan penunjuk MACD merentasi pelbagai bingkai masa. Strategi ini menghasilkan isyarat perdagangan dengan menilai sama ada trend harga konsisten merentasi tempoh yang berbeza (3 minit, 5 minit, 15 minit, 30 minit).
Logik teras strategi ini adalah untuk mengira keadaan penyambungan penunjuk MACD merentasi pelbagai bingkai masa (3 minit, 5 minit, 15 minit, 30 minit). Pertama, penunjuk MACD dikira pada setiap bingkai masa untuk menilai trend harga (naik atau turun) di bawah bingkai masa itu. Kemudian, trend harga merentasi pelbagai bingkai masa dinilai secara komprehensif:
Dengan menghakimi trend dalam jangka masa, bunyi pasaran jangka pendek dapat disaring dengan berkesan, menjadikan isyarat perdagangan lebih boleh dipercayai.
Strategi ini mempunyai kelebihan berikut:
Strategi ini juga mempunyai risiko berikut:
Penyelesaian yang sepadan:
Strategi ini boleh dioptimumkan lagi dalam aspek berikut:
Strategi Multi Timeframe MACD menggunakan keupayaan penilaian trend penunjuk MACD untuk mengesan pergerakan harga merentasi bingkai masa, yang dapat menapis bunyi bising dengan berkesan dan meningkatkan kualiti isyarat. Strategi ini boleh disesuaikan dengan fleksibel dengan produk dan persekitaran pasaran yang berbeza melalui penyesuaian parameter dan pengoptimuman peraturan, dan mempunyai 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)