Die Ressourcen sind geladen. Beförderung...

Strategie für den Ausbruch des gleitenden Durchschnitts aus einem einzigen Punkt

Schriftsteller:ChaoZhang, Datum: 2024-02-02 11:19:19
Tags:

img

Übersicht

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.

Strategie Logik

Die Strategie berechnet zunächst die Preisdynamikänderungmomm, dann trennt es in positiven Impulsm1und negativer Impulsm2. anschließend wird die positive und negative Dynamik über einen Rückblick insm1undsm2Schließlich der Chande-Impuls-Oszillator.chandeMODer 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.

Analyse der Vorteile

  • Die Strategie ist in der Lage, Wendepunkte vom Abwärtstrend zur Konsolidierung und zum Aufwärtstrend zu identifizieren, wodurch Eintritte zu niedrigen Preisen und Ausstiege zu hohen Preisen möglich sind.
  • Der Chande Momentum Oscillator berücksichtigt sowohl die Größe als auch die Geschwindigkeit der Preisänderungen und ist somit sehr effektiv bei der Trenddetektion.
  • Die Strategielogik ist einfach und leicht umzusetzen.

Risikoanalyse

  • Der Chande Momentum Oscillator ist empfindlich gegenüber Eingabeparametern.
  • Statische Kauf- und Verkaufslinieneinstellungen können auch zu viele falsche Signale einführen.
  • Das Fehlen eines Stop-Loss bedeutet, dass Verlustgeschäfte große Verluste anheben können.

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.

Optimierungsrichtlinien

  • Verschiedene Parameter-Einstellungen testen, um optimale Werte zu finden
  • Einführung dynamischer Kauf- und Verkaufslinien
  • Zusätzliche Filter mit anderen Indikatoren hinzufügen
  • Einbeziehung von Stop-Loss-Logik zur Verlustminderung

Schlussfolgerung

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}}

Mehr