MACD Moving Average Bull Bear Conversion Strategy mengira garis DIFF dan DEA penunjuk MACD untuk menentukan sama ada trend pasaran telah berbalik, dengan itu menjana isyarat perdagangan. Ia menjadi panjang apabila DIFF melintasi di atas DEA dan menjadi pendek apabila DIFF melintasi di bawah DEA. Strategi ini juga menggabungkan penapis EMA harga untuk mengelakkan pecah palsu.
Strategi ini terutamanya berdasarkan garis DIFF dan DEA dari penunjuk MACD. MACD bermaksud Moving Average Convergence Divergence, yang terdiri daripada garis DIFF, DEA dan MACD. Di antara mereka, DIFF mewakili perbezaan antara EMA jangka pendek dan EMA jangka panjang, DEA adalah EMA DIFF yang digunakan untuk mengesahkan isyarat DIFF, dan MACD mewakili perbezaan antara DIFF dan DEA, yang digunakan untuk mengenal pasti perbezaan.
Apabila DIFF memecahkan di atas DEA, ia bermakna purata bergerak jangka pendek mula menguat dan pasaran menjadi bullish. Apabila DIFF memecahkan di bawah DEA, ia menunjukkan purata bergerak jangka pendek menjadi lemah dan pasaran menjadi bearish. Oleh itu, strategi ini panjang apabila DIFF melintasi di atas DEA dan pendek apabila melintasi di bawah.
Di samping itu, strategi ini menggabungkan penapis harga EMA untuk mengelakkan pecah palsu. Ia hanya pergi lama apabila DIFF memecahkan di atas DEA dan harga di bawah harga panjang sebelumnya, dan hanya pergi pendek apabila DIFF memecahkan di bawah DEA dan harga di atas harga pendek sebelumnya.
Strategi penukaran Bull Bear Moving Average MACD menggabungkan penunjuk MACD dan penapis EMA harga untuk mengelakkan isyarat palsu yang dihasilkan semata-mata oleh MACD, sehingga meningkatkan prestasi perdagangan. Strategi ini dengan cepat mengenal pasti perubahan trend pasaran dan sesuai untuk perdagangan jangka pendek.
Kelebihan utama termasuk:
Strategi penukaran purata bergerak MACD Bull Bear juga mempunyai beberapa risiko:
Cara utama untuk mengoptimumkan risiko adalah:
Strategi penukaran purata bergerak MACD Bull Bear boleh dioptimumkan lagi dalam dimensi berikut:
MACD Moving Average Bull Bear Conversion Strategy mengenal pasti kemasukan pasaran bullish / bearish oleh isyarat silang DIFF dan DEA, dan menggunakan penapis EMA harga untuk menghilangkan isyarat palsu, dengan berkesan menentukan titik pembalikan trend pasaran. Dengan logik yang mudah dan jelas, ia dengan cepat mengenal pasti titik penukaran yang sesuai untuk perdagangan jangka pendek dan sederhana. Langkah seterusnya untuk mengoptimumkan termasuk menyesuaikan parameter, meningkatkan penapis, dan mengawal kekerapan perdagangan untuk menjadikan strategi lebih mantap.
/*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)))))