Basierend auf einer dynamischen Engulfing-Trend-Strategie


Erstellungsdatum: 2024-02-29 11:24:18 zuletzt geändert: 2024-02-29 11:24:18
Kopie: 0 Klicks: 561
1
konzentrieren Sie sich auf
1617
Anhänger

Basierend auf einer dynamischen Engulfing-Trend-Strategie

Überblick

Eine dynamische Trend-Trend-Strategie ist eine Strategie, die auf der Grundlage der Trend-Form in die Richtung des Trends handelt. Die Strategie verwendet die mittlere reale Schwankungsbreite (ATR) zur Identifizierung der Marktvolatilität, die Supertrend-Anzeige, um die Richtung des Markttrends zu bestimmen, und führt mehrere Short-Operationen durch, wenn sie mit der Trend-Form übereinstimmen und der Richtung der Trendrichtung entsprechen.

Strategieprinzip

  1. Berechnung des ATR, der zur Messung der Marktfluktuation dient.
  2. Berechnen Sie Supertrend-Indikatoren, um die wichtigsten Markttrends zu bestimmen.
  3. Definition der Mehr- und Leermarktbedingungen.
  4. Identifizieren Sie mehrköpfige Absorptionsformen (im Aufwärtstrend) und leere Absorptionsformen (im Abwärtstrend), die der Trendrichtung entsprechen.
  5. Stop-Loss- und Stop-Off-Punkte werden nach dem Schluckmodus berechnet.
  6. Bei der Identifizierung von Schluckformationen, die mit der Richtung der Tendenz übereinstimmen, werden Über- oder Unter-Operationen durchgeführt.
  7. Wenn der Preis die Stop-Loss-Leistung oder die Stop-Loss-Leistung berührt, wird der Verkauf platziert.
  8. In der Grafik wird die Schluckform angegeben.

Strategische Stärkenanalyse

Diese Strategie hat folgende Vorteile:

  1. In Kombination mit dem Absorbieren von Formen und der Erkennung von Trends erhöht sich die Signalqualität.
  2. Es ist wichtig, dass man die Wendepunkte der Trends erkennt und zielgerichtet agiert.
  3. Die Ausführung der Ausführungen ist deutlich und leicht zu handhaben.
  4. Die Stop-Loss-Strategie schluckt sowohl Trends als auch Risiken.
  5. Das Code-Framework ist klar und leicht zu optimieren und zu verbessern.

Strategische Risikoanalyse

Die Strategie birgt auch einige Risiken:

  1. Die Schluckform könnte ein falscher Durchbruch sein, der zu Verlusten führt, wenn er falsch erkannt wird.
  2. Es ist schwierig, die Parameter der Schluckform zu erfassen, wie z. B. die Größe des Volumens, die Dauer usw.
  3. Trends werden durch unvollständige Mechanismen beurteilt, die zu unkonformen Operationen führen können.
  4. Die Einstellung von Stop-Loss- und Stop-Off-Lösungen ist erfahrungsbasiert und kann zu subjektiv sein.
  5. Die Wirkung hängt von der Optimierung der Parameter ab und erfordert eine große Anzahl von historischen Daten.

Diese Risiken können durch folgende Maßnahmen kontrolliert und verbessert werden:

  1. In Kombination mit anderen technischen Indikatoren filtert er falsche Durchbruchsignale.
  2. Es werden robustere Methoden zur Berechnung der Parameter verwendet, wie beispielsweise die automatische ATR.
  3. Erhöhung der Zuverlässigkeit von Trendscheidungsmechanismen, beispielsweise durch die Einführung von Machine-Learning-Modellen.
  4. Genetische Algorithmen und andere Methoden werden genutzt, um die optimale Kombination von Parametern zu finden.
  5. Es wird in einem längeren Zeitfenster getestet, um die Stabilität der Parameter sicherzustellen.

Richtung der Strategieoptimierung

Die Strategie hat viel Optimierungsmöglichkeiten:

  1. Die Einführung von maschinellen Lernmodellen verbessert die Genauigkeit der Trendbeurteilung.
  2. In Kombination mit neuen Formenerkennungsmethoden verbessert sich die Erkennung von Schluckformen.
  3. Optimieren Sie Ihre Stop-Loss-Punkte dynamisch mit den neuesten Stop-Loss-Strategien.
  4. Auf Basis von Hochfrequenzdaten kann eine Schluckbruchstrategie entwickelt werden, die besser für Kurzstreckenoperationen geeignet ist.
  5. Es kann für die Parameteranpassung und Optimierung verschiedener Sorten verwendet werden.

Zusammenfassen

Insgesamt ist die dynamische Trend-Eating-Strategie durch die Kombination von deutlichen Eating-Formen mit präzisen Trend-Urteilen eine vernünftige Handelsstrategie für Einstiegssignal-Precision und Stop-Loss-Stopp. In der Anwendung kann die Stabilität und Profitabilität der Strategie durch Parameteroptimierung, Risikokontrolle und Einführung neuer Technologien weiter verbessert werden. Die Strategie ist klar und hat eine starke Allgemeinheit, die es wert ist, eingehend untersucht und angewendet zu werden.

Strategiequellcode
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Malikdrajat


//@version=4
strategy("Engulfing with Trend", overlay=true)

Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=true)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)

atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2

up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn

trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0)
plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor)
alertcondition(buySignal, title="SuperTrend Buy", message="SuperTrend Buy!")
alertcondition(sellSignal, title="SuperTrend Sell", message="SuperTrend Sell!")
changeCond = trend != trend[1]
alertcondition(changeCond, title="SuperTrend Direction Change", message="SuperTrend has changed direction!")

// Define Downtrend and Uptrend conditions
downtrend = trend == -1
uptrend = trend == 1


// Engulfing 
boringThreshold = input(25, title="Boring Candle Threshold (%)", minval=1, maxval=100, step=1)
engulfingThreshold = input(50, title="Engulfing Candle Threshold (%)", minval=1, maxval=100, step=1)
stopLevel = input(200, title="Stop Level (Pips)", minval=1)


// Boring Candle (Inside Bar) and Engulfing Candlestick Conditions
isBoringCandle = abs(open[1] - close[1]) * 100 / abs(high[1] - low[1]) <= boringThreshold
isEngulfingCandle = abs(open - close) * 100 / abs(high - low) <= engulfingThreshold

// Bullish and Bearish Engulfing Conditions
bullEngulfing = uptrend and close[1] < open[1] and close > open[1] and not isBoringCandle and not isEngulfingCandle
bearEngulfing = downtrend and close[1] > open[1] and close < open[1] and not isBoringCandle and not isEngulfingCandle

// Stop Loss, Take Profit, and Entry Price Calculation
bullStop = close + (stopLevel * syminfo.mintick)
bearStop = close - (stopLevel * syminfo.mintick)
bullSL = low 
bearSL = high
bullTP = bullStop + (bullStop - low)
bearTP = bearStop - (high - bearStop)

// Entry Conditions
enterLong = bullEngulfing and uptrend
enterShort = bearEngulfing and downtrend

// Exit Conditions
exitLong = crossover(close, bullTP) or crossover(close, bullSL)
exitShort = crossover(close, bearTP) or crossover(close, bearSL)

// Check if exit conditions are met by the next candle
exitLongNextCandle = exitLong and (crossover(close[1], bullTP[1]) or crossover(close[1], bullSL[1]))
exitShortNextCandle = exitShort and (crossover(close[1], bearTP[1]) or crossover(close[1], bearSL[1]))

// Strategy Execution
strategy.entry("Buy", strategy.long, when=enterLong )
strategy.entry("Sell", strategy.short, when=enterShort )

// Exit Conditions for Long (Buy) Positions
if (bullEngulfing and not na(bullTP) and not na(bullSL))
    strategy.exit("Exit Long", from_entry="Buy", stop=bullSL, limit=bullTP)

// Exit Conditions for Short (Sell) Positions
if (bearEngulfing and not na(bearTP) and not na(bearSL))
    strategy.exit("Exit Short", from_entry="Sell", stop=bearSL, limit=bearTP)

// Plot Shapes and Labels
plotshape(bullEngulfing, style=shape.triangleup, location=location.abovebar, color=color.green)
plotshape(bearEngulfing, style=shape.triangledown, location=location.abovebar, color=color.red)

// Determine OP, SL, and TP
plot(bullEngulfing ? bullStop : na, title="Bullish Engulfing stop", color=color.red, linewidth=3, style=plot.style_linebr)
plot(bearEngulfing ? bearStop : na, title="Bearish Engulfing stop", color=color.red, linewidth=3, style=plot.style_linebr)
plot(bullEngulfing ? bullSL : na, title="Bullish Engulfing SL", color=color.red, linewidth=3, style=plot.style_linebr)
plot(bearEngulfing ? bearSL : na, title="Bearish Engulfing SL", color=color.red, linewidth=3, style=plot.style_linebr)
plot(bullEngulfing ? bullTP : na, title="Bullish Engulfing TP", color=color.green, linewidth=3, style=plot.style_linebr)
plot(bearEngulfing ? bearTP : na, title="Bearish Engulfing TP", color=color.green, linewidth=3, style=plot.style_linebr)