Die MACD Moving Average Bull Bear Conversion Strategy berechnet die DIFF- und DEA-Linien des MACD-Indikators, um festzustellen, ob sich der Markttrend umgekehrt hat, wodurch Handelssignale generiert werden.
Die Strategie basiert hauptsächlich auf den DIFF- und DEA-Linien des MACD-Indikators. MACD steht für Moving Average Convergence Divergence, bestehend aus den DIFF-, DEA- und MACD-Linien. Unter ihnen repräsentiert DIFF die Differenz zwischen kurzfristigen EMA und langfristigen EMA, DEA ist die EMA von DIFF, die zur Überprüfung von DIFF-Signalen verwendet wird, und MACD repräsentiert die Differenz zwischen DIFF und DEA, die zur Identifizierung von Abweichungen verwendet wird.
Wenn der DIFF über die DEA bricht, bedeutet dies, dass der kurzfristige gleitende Durchschnitt zu stärken beginnt und der Markt bullisch wird. Wenn der DIFF unter die DEA bricht, deutet dies darauf hin, dass der kurzfristige gleitende Durchschnitt schwach wird und der Markt bärisch wird. Daher geht diese Strategie lang, wenn der DIFF über die DEA überschreitet und kurz, wenn er darunter überschreitet.
Darüber hinaus beinhaltet die Strategie Preis-EMA-Filter, um falsche Ausbrüche zu vermeiden. Sie geht nur lang, wenn DIFF über DEA bricht und der Preis unter dem vorherigen Long-Preis liegt, und geht nur kurz, wenn DIFF unter DEA bricht und der Preis über dem vorherigen Short-Preis liegt.
Die MACD Moving Average Bull Bear Conversion Strategie kombiniert den MACD-Indikator und die Preis-EMA-Filter, um falsche Signale zu vermeiden, die ausschließlich durch den MACD generiert werden, wodurch die Handelsleistung verbessert wird.
Zu den wichtigsten Vorteilen gehören:
Die MACD Moving Average Bull Bear Conversion Strategie birgt ebenfalls einige Risiken:
Die wichtigsten Möglichkeiten zur Optimierung der Risiken sind:
Die MACD-Strategie zur Umrechnung des gleitenden Durchschnitts "Bull Bear" kann in folgenden Dimensionen weiter optimiert werden:
Die MACD Moving Average Bull Bear Conversion Strategy identifiziert bullish/bearish Markteintritt durch DIFF und DEA Crossover Signale und verwendet Preis-EMA-Filter, um falsche Signale zu entfernen, um effektiv Markttrendumkehrpunkte zu bestimmen. Mit einfacher und klarer Logik identifiziert sie schnell Konversionspunkte, die für den kurz- und mittelfristigen Handel geeignet sind. Die nächsten Schritte zur Optimierung umfassen die Anpassung von Parametern, die Verbesserung von Filtern und die Kontrolle der Handelsfrequenz, um die Strategie robuster zu machen.
/*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)))))