Die Single Point Moving Average Breakout Strategie ist eine quantitative Handelsstrategie, die auf dem Chande Momentum Oszillator basiert. Sie erkennt, wann sich der Markt in einer Konsolidierungsphase befindet, indem sie die Momentumsänderungen des Preises berechnet. Wenn die Chande Momentum-Linie über die Kauflinie überschreitet oder unter die Verkaufslinie fällt, werden entsprechend lange oder kurze Trades ausgeführt.
Die Strategie berechnet zunächst die Preisdynamikänderungmomm
, dann trennt es in positiven Impulsm1
und negativer Impulsm2
. anschließend wird die positive und negative Dynamik über einen Rückblick insm1
undsm2
Schließlich der Chande-Impuls-Oszillator.chandeMO
Der Indikator schwingt um die Nulllinie. Messwerte über Null zeigen eine stärkere Aufwärtsdynamik an, während Messwerte unter Null eine stärkere Abwärtsdynamik anzeigen.
Wenn die Chande Momentum-Linie über die Kauflinie von niedrigeren Ebenen überschreitet, signalisiert sie, dass der Preis aus einem Abwärtstrend ausbricht und bereit ist, einen Aufwärtstrend zu starten.
Einige Möglichkeiten zur Verbesserung sind die Verwendung dynamischer Kauf-/Verkaufslinien, das Filtern von Signalen mit anderen Indikatoren und die Implementierung von Stop Loss zur Kontrolle von Risiken.
Die Single Point Moving Average Breakout Strategie identifiziert Trendwendepunkte vom Abwärtstrend zur Konsolidierung zum Aufwärtstrend mithilfe des Chande Momentum Oscillators und ermöglicht den Handel mit niedrigem Kauf und hohem Verkauf. Obwohl sie einfach und intuitiv ist, können Verbesserungen bei Parameter-Tuning, Signalfilterung und Risikokontrolle die Performance weiter verbessern. Insgesamt dient sie als effektives Werkzeug für quantitative Trader, um Trendumkehrungen zu bestimmen.
/*backtest start: 2024-01-02 00:00:00 end: 2024-02-01 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //* Backtesting Period Selector | Component *// //* https://www.tradingview.com/script/eCC1cvxQ-Backtesting-Period-Selector-Component *// //* https://www.tradingview.com/u/pbergden/ *// //* Modifications made *// testStartYear = input(2021, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(10, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testStopYear = input(999999, "Backtest Stop Year") testStopMonth = input(9, "Backtest Stop Month") testStopDay = input(26, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) testPeriod() => true /////////////// END - Backtesting Period Selector | Component /////////////// strategy(title="Chande Momentum Strat", shorttitle="ChandeMO Strat", format=format.price, precision=2) length = input(9, minval=1) src = input(close, "Price", type = input.source) momm = change(src) f1(m) => m >= 0.0 ? m : 0.0 f2(m) => m >= 0.0 ? 0.0 : -m m1 = f1(momm) m2 = f2(momm) sm1 = sum(m1, length) sm2 = sum(m2, length) percent(nom, div) => 100 * nom / div chandeMO = percent(sm1-sm2, sm1+sm2) plot(chandeMO, "Chande MO", color=color.blue) hline(0, color=#C0C0C0, linestyle=hline.style_dashed, title="Zero Line") buyline= input(-80) sellline= input(80) hline(buyline, color=color.gray) hline(sellline, color=color.gray) if testPeriod() if crossover(chandeMO, buyline) strategy.entry("Long", strategy.long, alert_message="a=ABCD b=buy e=binanceus q=1.2 s=uniusd") // strategy.exit(id="Long Stop Loss", stop=strategy.position_avg_price*0.8) //20% stop loss if crossunder(chandeMO, sellline) strategy.entry("Short", strategy.short, alert_message="a=ABCD b=sell e=binanceus q=1.2 s=uniusd") // strategy.exit(id="Short Stop Loss", stop=strategy.position_avg_price*1.2) //20% stop loss // remember to alert as {{strategy.order.alert_message}}