Seitwärtsdurchbruchsstrategie mit einem einzigen gleitenden Durchschnitt


Erstellungsdatum: 2024-02-02 11:19:19 zuletzt geändert: 2024-02-02 11:19:19
Kopie: 0 Klicks: 537
1
konzentrieren Sie sich auf
1617
Anhänger

Seitwärtsdurchbruchsstrategie mit einem einzigen gleitenden Durchschnitt

Überblick

Die Single-Mean-Point-Horizontal-Breakout-Strategie ist eine quantitative Handelsstrategie, die auf dem Chande-Dynamik-Indikator basiert. Die Strategie beurteilt, ob sich der Markt in der Horizontal-Ausgleichsphase befindet, indem sie die Dynamik der Preise berechnet.

Strategieprinzip

Die Strategie berechnet zunächst die dynamische Veränderung des PreisesmommUnd dann teilt man es in positive Dynamik.m1und negative Dynamikm2Dann berechnen wir die Summe der positiven und negativen Dynamik innerhalb eines bestimmten Zeitraums.sm1Undsm2Und am Ende ist der Chande-Dynamik-Wert.chandeMODer Indikator ist mit 0 als Mittelpunkt, wenn der Indikator größer als 0 ist, ist die Aufwärtskraft größer als die Abwärtskraft, und wenn kleiner als 0 ist das Gegenteil.

Wenn der Chande-Dynamik-Indikator die Kauflinie von der niedrigen Breche, bedeutet, dass der Preis aus der Fallphase und in die Aufholphase der Vorbereitung auf den Aufstieg, die Strategie zu kaufen. Wenn der Indikator von der hohen Breche die Verkauflinie, die Verkaufsaktion durchgeführt.

Analyse der Stärken

  • Die Strategie erfasst die Wendepunkte, an denen die Preise von unten zu Berücksichtigung und dann nach oben gehen, und ermöglicht es, niedrig zu kaufen und hoch zu verkaufen.
  • Der Chande-Dynamik-Indikator berücksichtigt die Geschwindigkeit und Intensität der Preisänderungen und ist ein gutes Instrument, um Trends zu erkennen.
  • Die Strategie ist einfach zu handhaben und umzusetzen.

Risikoanalyse

  • Der Chande-Dynamik-Indikator ist parametersensibel, und unterschiedliche Perioden-Parameter-Einstellungen führen zu sehr unterschiedlichen Handelssignalen und -ergebnissen.
  • Die statische Einstellung der Kauf- und Verkaufslinien kann auch zu viel Fehlsignal führen.
  • Die Strategie kann zu einer Vergrößerung der Verluste führen, wenn sie keine Stop-Loss-Bilanz berücksichtigt.

Es können dynamische Kauf- und Verkaufslinien eingerichtet werden, oder es können Filtersignale in Kombination mit anderen Indikatoren eingerichtet werden. Es sollte auch ein Stop-Loss eingerichtet werden, um das Risiko zu kontrollieren.

Optimierungsrichtung

  • Versuchen Sie, die Parameter für verschiedene Zyklen zu optimieren
  • Setzen Sie dynamische Kauf- und Verkaufslinien
  • Signalfilterung in Kombination mit anderen Indikatoren
  • Hinzufügen von Stop-Logic-Kontrollrisiken

Zusammenfassen

Die Single-Mean-Point-Cross-Streak-Strategie erlaubt es, die Kurse von unten nach oben zu korrigieren. Die Strategie ist einfach und praktisch, um Trendwende effektiv zu erfassen. Die Parameter-Einstellungen und die Stop-Loss-Kontrolle müssen jedoch weiter optimiert werden, um das Risiko von Fehlsignalen und -Kontrollen zu reduzieren.

Strategiequellcode
/*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}}