Strategi MACD Berbilang Jangka Masa

Penulis:ChaoZhang, Tarikh: 2023-11-28 15:33:35
Tag:

img

Ringkasan

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).

Logika Strategi

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:

  1. Apabila harga meningkat di semua bingkai masa, isyarat beli dihasilkan.
  2. Apabila harga jatuh di semua bingkai masa, isyarat jual dihasilkan.

Dengan menghakimi trend dalam jangka masa, bunyi pasaran jangka pendek dapat disaring dengan berkesan, menjadikan isyarat perdagangan lebih boleh dipercayai.

Kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Mengesan trend merentasi bingkai masa menapis bunyi bising dan menjadikan isyarat perdagangan lebih boleh dipercayai.
  2. Parameter penunjuk MACD boleh disesuaikan untuk memenuhi persekitaran pasaran yang berbeza.
  3. Jangka masa untuk pertimbangan komprehensif boleh dikonfigurasi secara fleksibel untuk menentukan peraturan perdagangan secara bebas.

Risiko dan Penyelesaian

Strategi ini juga mempunyai risiko berikut:

  1. Apabila menilai konsistensi trend di semua bingkai masa, pembalikan tempatan mungkin terlepas.
  2. Tetapan parameter MACD yang tidak betul boleh menyebabkan prestasi isyarat perdagangan yang buruk.

Penyelesaian yang sepadan:

  1. Peraturan penilaian boleh diperlahankan untuk membolehkan pembalikan harga pada jangka masa individu untuk merebut lebih banyak peluang.
  2. Parameter MACD perlu diselaraskan mengikut pasaran yang berbeza untuk menjadikan isyarat perdagangan lebih sesuai dengan trend semasa.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan lagi dalam aspek berikut:

  1. Meningkatkan atau mengurangkan jumlah kerangka masa yang diperlukan untuk penilaian komprehensif untuk mencari kombinasi yang optimum.
  2. Uji tetapan parameter penunjuk MACD yang berbeza.
  3. Sesuaikan peraturan kemasukan dan keluar khusus berdasarkan hasil pengujian semula sebenar.

Ringkasan

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)

Lebih lanjut