
Strategi penukaran bullish-bearish MACD dengan mengira DIFF dan DEA rata-rata indikator MACD untuk menentukan sama ada trend pasaran bertukar, dan seterusnya menghasilkan isyarat perdagangan. Apabila DIFF di atas melewati DEA, lakukan lebih banyak; apabila DIFF di bawah melewati DEA, lakukan kosong. Strategi ini menggabungkan penyaringan EMA rata-rata harga untuk mengelakkan pecah palsu.
Strategi ini adalah berdasarkan pada rata-rata DIFF dan DEA dalam indikator MACD. MACD mewakili perbezaan purata bergerak indeks yang terdiri daripada garis DIFF, DEA, dan MACD. Di antaranya, garis DIFF mewakili perbezaan antara rata-rata EMA jangka pendek dan rata-rata EMA jangka panjang, garis DEA adalah rata-rata EMA DIFF, yang digunakan untuk mengesahkan isyarat garis DIFF, dan garis MACD adalah perbezaan antara DIFF dengan mengurangkan DEA, yang diwakili oleh belakang.
Apabila DIFF naik melampaui DEA, bermakna garis purata jangka pendek mula kuat, pasaran melangkah lebih tinggi, dan apabila DIFF turun melampaui DEA, bermakna garis purata jangka pendek mula lemah, pasaran melangkah lebih rendah. Oleh itu, strategi ini melakukan lebih banyak apabila DIFF melintasi DEA, dan melintasi kosong.
Pada masa yang sama, strategi ini juga menggabungkan EMA rata-rata harga untuk menyaring pecah palsu. Hanya apabila DIFF naik melampaui DEA, dan harga lebih rendah daripada kenaikan harga terakhir; hanya apabila DIFF turun melampaui DEA, dan harga lebih tinggi daripada kenaikan harga terakhir.
Strategi penukaran bullish-bearish MACD yang bersesuaian menggabungkan penunjuk MACD dan harga EMA yang bersesuaian, mengelakkan isyarat palsu yang dihasilkan hanya oleh penunjuk MACD, meningkatkan keberkesanan perdagangan. Strategi ini menilai perubahan trend pasaran dengan cepat dan sesuai untuk operasi garis pendek.
Kelebihan utama adalah:
Strategi penukaran bullish-bearish pada MACD mempunyai beberapa risiko, terutamanya:
Risiko-risiko ini boleh dioptimumkan dalam beberapa aspek:
Strategi penukaran bullish-bearish MACD rata-rata mempunyai ruang untuk pengoptimuman, yang boleh dioptimumkan dari dimensi berikut:
Strategi penukaran bullish dan bearish MACD melalui DIFF, DEA untuk menilai masa masuk pasaran dengan mata wang dan mata wang kosong, dan bekerjasama dengan harga EMA untuk memfilterkan isyarat palsu, untuk mencapai kesan penukaran tren pasaran dengan cepat. Strategi ini menggunakan logik perdagangan yang mudah dan jelas, menilai titik peralihan dengan cepat, sesuai untuk garis pendek dan garis tengah. Langkah operasi seterusnya dapat dioptimumkan dari segi penyesuaian parameter, meningkatkan penapis, mengawal frekuensi perdagangan, dan lain-lain.
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("macd_strategy",
shorttitle="macd",
overlay=true,
pyramiding=1,
max_bars_back=5000,
calc_on_order_fills = false,
calc_on_every_tick=true,
default_qty_type=strategy.percent_of_equity,
default_qty_value=100,
commission_type =strategy.commission.percent,
commission_value=0.00075)
[diff, dea, _] = macd(close, 12, 26, 7)
dea_close = ema(diff, 3)
price = ema(close, 9)
plot(price)
cross_over_price = na
cross_over_signal = na
cross_over_price := cross_over_price[1]
cross_over_signal := cross_over_signal[1]
cross_under_price = na
cross_under_signal = na
cross_under_price := cross_under_price[1]
cross_under_signal := cross_under_signal[1]
if (crossover(diff,dea))
cross_over_price := price[1]
cross_over_signal := diff
if (crossunder(diff,dea))
cross_under_price := price[1]
cross_under_signal := diff
if dea > 0
cross_over_price = na
cross_over_signal = na
else
cross_under_price = na
cross_under_signal = na
if diff > 0
if cross_under_price > cross_under_price[1]*1 and cross_under_signal < cross_under_signal[1]*0.95
strategy.entry("S", strategy.short, comment="S")
else
if cross_over_price < cross_over_price[1]*1 and cross_over_signal > cross_over_signal[1]*0.95
strategy.entry("B", strategy.long, comment="B")
// strategy.exit("exit_s", "S", stop = strategy.position_avg_price*1.05, when=strategy.position_size < 0)
// strategy.exit("exit_b", "B", stop = strategy.position_avg_price*0.95, when=strategy.position_size > 0)
strategy.close_all(when=(strategy.position_size < 0 and (dea < 0 or diff > cross_under_signal*1 or crossover(diff, dea)) or (strategy.position_size > 0 and (dea > 0 or diff < cross_over_signal*1 or crossunder(diff, dea)))))