Strategi konversi MACD Moving Average Bull Bear menghitung garis DIFF dan DEA dari indikator MACD untuk menentukan apakah tren pasar telah berbalik, sehingga menghasilkan sinyal perdagangan.
Strategi ini terutama didasarkan pada garis DIFF dan DEA dari indikator MACD. MACD adalah singkatan dari Moving Average Convergence Divergence, yang terdiri dari garis DIFF, DEA dan MACD. Di antara mereka, DIFF mewakili perbedaan antara EMA jangka pendek dan EMA jangka panjang, DEA adalah EMA dari DIFF yang digunakan untuk memverifikasi sinyal DIFF, dan MACD mewakili perbedaan antara DIFF dan DEA, yang digunakan untuk mengidentifikasi divergensi.
Ketika DIFF melanggar di atas DEA, itu berarti bahwa rata-rata bergerak jangka pendek mulai menguat dan pasar menjadi bullish. Ketika DIFF melanggar di bawah DEA, itu menunjukkan bahwa rata-rata bergerak jangka pendek menjadi lemah dan pasar menjadi bearish. Oleh karena itu, strategi ini berjalan panjang ketika DIFF melintasi di atas DEA dan berjalan pendek saat melintasi di bawahnya.
Selain itu, strategi ini menggabungkan filter EMA harga untuk menghindari pecah palsu. hanya pergi panjang ketika DIFF melanggar di atas DEA dan harga di bawah harga panjang sebelumnya, dan hanya pergi pendek ketika DIFF melanggar di bawah DEA dan harga di atas harga pendek sebelumnya.
Strategi Konversi Bull Bear Moving Average MACD menggabungkan indikator MACD dan filter EMA harga untuk menghindari sinyal palsu yang dihasilkan hanya oleh MACD, sehingga meningkatkan kinerja perdagangan. Strategi ini dengan cepat mengidentifikasi perubahan tren pasar dan cocok untuk perdagangan jangka pendek.
Keuntungan utama meliputi:
Strategi Konversi Rata-rata Gerak MACD Bull Bear juga memiliki beberapa risiko:
Cara utama untuk mengoptimalkan risiko adalah:
Strategi Konversi Bull Bear Moving Average MACD dapat dioptimalkan lebih lanjut dalam dimensi berikut:
MACD Moving Average Bull Bear Conversion Strategy mengidentifikasi masuk pasar bullish/bearish dengan sinyal crossover DIFF dan DEA, dan menggunakan filter EMA harga untuk menghilangkan sinyal palsu, secara efektif menentukan titik pembalikan tren pasar. Dengan logika yang sederhana dan jelas, ia dengan cepat mengidentifikasi titik konversi yang cocok untuk perdagangan jangka pendek dan menengah. Langkah selanjutnya untuk mengoptimalkan termasuk menyesuaikan parameter, meningkatkan filter, dan mengontrol frekuensi perdagangan untuk membuat strategi lebih kuat.
/*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)))))