Strategi ini adalah strategi dagangan MACD berdasarkan purata bergerak bertimbang beban dagangan yang fleksibel (EVWMA); ia menggunakan kelebihan EVWMA untuk merancang strategi yang jelas dan berguna untuk isyarat dagangan.
Indikator EVWMA menggabungkan maklumat perdagangan penuh ke dalam pengiraan purata bergerak, yang membolehkan purata bergerak mencerminkan perubahan harga dengan lebih tepat. Strategi ini membina perhitungan garis pantas dan garis perlahan berdasarkan pelaksanaan EVWMA. Parameter garis pantas ditetapkan dengan lebih sensitif untuk menangkap perubahan harga jangka pendek; parameter garis perlahan ditetapkan dengan lebih kukuh untuk menapis sebahagian bunyi.
Kelebihan terbesar strategi ini adalah menggunakan kekuatan indikator EVWMA untuk menjadikan tetapan parameter strategi MACD lebih stabil dan isyarat dagangan lebih jelas. EVWMA dapat memahami lebih baik mengenai trend perubahan pasaran berbanding dengan purata bergerak yang mudah. Ini menjadikan strategi ini lebih fleksibel dan dapat berfungsi dengan stabil dalam pelbagai persekitaran pasaran.
Risiko utama strategi ini adalah bahawa MACD itu sendiri mempunyai kelewatan tertentu dan tidak dapat menangkap pembalikan harga pada masa yang tepat. Di samping itu, tetapan parameter EVWMA juga boleh mempengaruhi prestasi strategi. Jika parameter garis perlahan tidak ditetapkan dengan betul, gangguan isyarat dagangan akan berlaku, yang menjejaskan keuntungan.
Untuk mengurangkan risiko, parameter harus diselaraskan dengan betul supaya jurang antara garisan pantas dan garisan perlahan berada pada tahap yang sesuai. Histogram dapat membantu menentukan sama ada perlu menyesuaikan. Selain itu, strategi berhenti rugi boleh direka untuk mengelakkan kerugian tunggal yang terlalu besar.
Strategi ini boleh dioptimumkan terutamanya dari beberapa aspek:
Dengan menggunakan teknologi tetapan parameter adaptif, parameter EVWMA boleh disesuaikan secara automatik mengikut persekitaran pasaran untuk memastikan ketelusan isyarat dagangan.
Dengan menambah mekanisme menghentikan kerugian, ia dapat mengawal kerugian secara berkesan.
Ia disaring daripada isyarat yang salah apabila ia digabungkan dengan indikator lain.
Pilihan titik masuk yang dioptimumkan. Kaedah semasa adalah membuka dagangan apabila MACD bersilang dengan nol.
Strategi ini menggunakan kelebihan penunjuk EVWMA untuk membina strategi MACD yang mudah dan praktikal; ia lebih stabil, lebih fleksibel; tetapi ada juga masalah ketinggalan MACD itu sendiri. Kami boleh membuat penambahbaikan dari segi pengoptimuman parameter penyesuaian, penghentian kerugian, reka bentuk penapisan isyarat, dan lain-lain untuk menjadikan strategi lebih mantap.
/*backtest
start: 2023-01-15 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("QuantNomad - EVWMA MACD Strategy", shorttitle = "EVWMA MACD", overlay = false)
// Inputs
fast_sum_length = input(10, title = "Fast Sum Length", type = input.integer)
slow_sum_length = input(20, title = "Slow Sum Length", type = input.integer)
signal_length = input(9, title = "Signal Smoothing", type = input.integer, minval = 1, maxval = 50)
// Calculate Volume Period
fast_vol_period = sum(volume, fast_sum_length)
slow_vol_period = sum(volume, slow_sum_length)
// Calculate EVWMA
fast_evwma = 0.0
fast_evwma := ((fast_vol_period - volume) * nz(fast_evwma[1], close) + volume * close) / (fast_vol_period)
// Calculate EVWMA
slow_evwma = 0.0
slow_evwma := ((slow_vol_period - volume) * nz(slow_evwma[1], close) + volume * close) / (slow_vol_period)
// Calculate MACD
macd = fast_evwma - slow_evwma
signal = ema(macd, signal_length)
hist = macd - signal
// Plot
plot(hist, title = "Histogram", style = plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? #26A69A : #B2DFDB) : (hist[1] < hist ? #FFCDD2 : #EF5350) ), transp=0 )
plot(macd, title = "MACD", color = #0094ff, transp=0)
plot(signal, title = "Signal", color = #ff6a00, transp=0)
// Strategy
strategy.entry("Long", true, when = crossover(fast_evwma, slow_evwma))
strategy.entry("Short", false, when = crossunder(fast_evwma, slow_evwma))