MACD Average Line Bull/Bear Conversion Strategi Menghitung MACD Indikator DIFF dan DEA Average Line untuk menentukan apakah tren pasar telah berbalik dan menghasilkan sinyal perdagangan. Ketika DIFF di atas melewati DEA, lakukan over; Ketika DIFF di bawah melewati DEA, lakukan short. Strategi ini juga menggabungkan harga EMA Average Line Filter untuk menghindari terjadinya false breakout.
Strategi ini terutama didasarkan pada rata-rata DIFF dan DEA dari indikator MACD. MACD mewakili perbedaan rata-rata bergerak indeks yang terdiri dari garis DIFF, DEA, dan MACD. Di antaranya, garis DIFF mewakili perbedaan antara rata-rata EMA jangka pendek dan rata-rata EMA jangka panjang.
Ketika DIFF naik melewati DEA, berarti bahwa rata-rata jangka pendek mulai kuat, pasar masuk ke posisi teratas, dan ketika DIFF turun melewati DEA, berarti bahwa rata-rata jangka pendek mulai lemah, pasar masuk ke posisi teratas. Oleh karena itu, strategi ini melakukan lebih banyak ketika melewati DEA pada DIFF, dan melakukan lebih banyak ketika melewati.
Pada saat yang sama, strategi ini juga menggabungkan EMA rata-rata harga untuk memfilter penembusan palsu. Hanya melakukan lebih banyak ketika DIFF naik melampaui DEA dan harga lebih rendah dari harga yang lebih tinggi sebelumnya; hanya melakukan lebih banyak ketika DIFF turun melampaui DEA dan harga lebih tinggi dari harga yang lebih rendah sebelumnya.
Strategi konversi MACD bullish/bearish yang menggabungkan MACD dengan harga EMA, menghindari sinyal palsu yang dihasilkan oleh MACD saja, meningkatkan efektivitas perdagangan. Strategi ini menilai tren pasar yang berubah dengan cepat, cocok untuk operasi garis pendek.
Keunggulan utama adalah:
Ada beberapa risiko dalam strategi konversi bullish/bearish pada MACD, yang meliputi:
Risiko-risiko ini dapat dioptimalkan dalam beberapa hal:
Strategi konversi bullish/bearish pada MACD rata-rata juga memiliki ruang untuk optimalisasi, yang dapat dioptimalkan dari beberapa dimensi berikut:
Strategi MACD rata-rata bull/bear transformasi strategi dengan DIFF, DEA silang menilai waktu pasar masuk ke multihead dan head, dan bekerja sama dengan harga EMA rata-rata filter palsu sinyal, mencapai efek cepat menilai perubahan tren pasar. Strategi ini dengan logika perdagangan yang sederhana dan jelas, menilai titik perubahan dengan cepat, cocok untuk garis pendek dan garis tengah. Operasi langkah selanjutnya dapat dioptimalkan dari penyesuaian parameter, meningkatkan filter, kontrol frekuensi perdagangan, dan lain-lain, membuat strategi lebih stabil.
/*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)))))