Die Ressourcen sind geladen. Beförderung...

Verbesserte Strategie zur Beobachtung der Wellenentwicklung

Schriftsteller:ChaoZhang, Datum: 2024-01-31 15:35:41
Tags:

img

Übersicht: Dies ist eine Trendfolgestrategie, die den Wellen-Trend-Oszillator verwendet, um Trends zu identifizieren. Es berechnet exponentielle gleitende Durchschnitte des Durchschnittspreises und die absolute Preisdifferenz, um eine Wellen-Trend-Linie zu zeichnen. Handelssignale werden erzeugt, wenn die Wellen-Trend-Linie Überkauf-/Überverkaufszonen überschreitet. Zusätzliche Filter auf gleitendem Durchschnitt und Volumen vermeiden falsche Signale.

Strategie Logik:

  1. Berechnen Sie den durchschnittlichen Preis ap = (Hoch + Tief + Schließen) / 3

  2. Berechnung der n-Perioden-EMA von ap, um esa zu erhalten

  3. Berechnung des n-Perioden-EMA der absoluten Differenz zwischen ap und esa, um d zu erhalten

  4. Berechnen Sie die Wellen-Trendlinie: ci = (ap - esa) /(0.015*d)

  5. Berechnen Sie den n2-Perioden-EMA von ci, um die endgültige Wellen-Trendlinie tci, d. h. wt1 zu erhalten

  6. Berechnen Sie den 4-Perioden-SMA von wt1 um wt2 zu erhalten

  7. Überkaufte/überverkaufte Grundstücke obLevel1/2

  8. Erstellen Sie ein Kaufsignal, wenn wt1 über obLevel2 geht; erzeugen Sie ein Verkaufssignal, wenn wt1 unter osLevel2 geht

  9. Fügen Sie gleitenden Durchschnitt emaFilter und Volumenfilter VolumeFilter als Filter hinzu, um falsche Signale zu vermeiden

  10. Vermögenswerte, die nicht in den unter Artikel 36 Absatz 1 Buchstabe c der CRR aufgeführt sind

Vorteile:

  1. Die Wellen-Trendlinie verarbeitet Trend-/Gegen-Trend-Übergänge gut

  2. Verlässlichkeit durch doppelte Filter für gleitenden Durchschnitt und Volumen verbessert

  3. Mehrfache Parameter vermeiden Einschränkungen eines einzelnen Indikators

  4. Vermögenswerte, die nicht in den Wertpapieren enthalten sind

Risiken und Grenzen:

  1. Auswahl der Parameter kann zu schlechter Leistung oder Überanpassung führen

  2. Keine endgültigen Leitlinien für optimale Parameter

  3. Ignoriert breitere Marktbedingungen

  4. Risiko von Schlagsägen in den Märkten mit Bandbreite/Schlagkraft

  5. Fehlen von Ausstiegsregeln abgesehen von Gewinn-/Stop-Loss-Verfahren

Möglichkeiten zur Verbesserung:

  1. Prüfparameter für Zeiträume/Vermögenswerte zur Ermittlung optimaler Werte

  2. Einbeziehung von Volatilitätsmetriken zur Vermeidung von Niedrigvolatilitätsregelungen

  3. Hinzufügen von Indikatoren wie RSI zur Verbesserung der Signalgenauigkeit

  4. Erstellen Sie ein maschinelles Lernmodell, um optimale maßgeschneiderte Parameter zu finden

  5. Verstärkung von Exits mit Trailing Stops oder volatilitätsbasierten Exits

Schlussfolgerung:

Es ist eine Trend-Folge-Strategie, die den Wellen-Trend-Indikator mit zusätzlichen Filtern umfasst. Es nutzt die Fähigkeit der Wellen-Trend-Linie, Trendübergänge zu identifizieren, verwendet gleitende Durchschnitts- und Volumenfilter, um falsche Signale zu vermeiden, und zielt darauf ab, die meisten mittelfristigen / langfristigen Trends zu erfassen. Profit/Stop-Loss wird verwendet, um das Risiko zu kontrollieren. Es besteht eine bedeutende Möglichkeit, die Leistung über mehr Instrumente und Zeitrahmen hinweg zu verbessern, indem Parameter optimiert werden, mehr Indikatoren hinzugefügt werden und Techniken wie maschinelles Lernen verwendet werden.


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

//@version=5
strategy("Bush Strategy test", shorttitle="Nique Audi", overlay=false)

// Paramètres
n1 = input(10, title="Channel Length")
n2 = input(21, title="Average Length")
obLevel1 = input(60, title="Over Bought Level 1")
obLevel2 = input(53, title="Over Bought Level 2")
osLevel1 = input(-65, title="Over Sold Level 1")
osLevel2 = input(-60, title="Over Sold Level 2")
takeProfitPercentage = input(1, title="Take Profit (%)")
stopLossPercentage = input(0.50, title="Stop Loss (%)")

// Calculs
ap = hlc3 
esa = ta.ema(ap, n1)
d = ta.ema(math.abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ta.ema(ci, n2)

wt1 = tci
wt2 = ta.sma(wt1, 4)

// Tracé des lignes
plot(0, color=color.gray)
plot(obLevel1, color=color.red)
plot(osLevel1, color=color.green)
plot(obLevel2, color=color.red, style=plot.style_line)
plot(osLevel2, color=color.green, style=plot.style_line)

plot(wt1, color=color.green)
plot(wt2, color=color.red, style=plot.style_line)

// Tracé de la différence entre wt1 et wt2 en bleu
hline(0, "Zero Line", color=color.gray)

// Conditions d'entrée long et court
longCondition = ta.crossover(wt1, obLevel2)
shortCondition = ta.crossunder(wt1, osLevel2)

// Tracé des signaux d'achat et de vente
plotshape(series=longCondition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal")
plotshape(series=shortCondition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")

// Conditions d'entrée et de sortie
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)

// Niveaux de prise de profit pour les positions longues et courtes
longTakeProfitLevel = strategy.position_avg_price * (1 + takeProfitPercentage / 100)
shortTakeProfitLevel = strategy.position_avg_price * (1 - takeProfitPercentage / 100)

// Vérification si les niveaux de prise de profit sont atteints
longTakeProfitReached = strategy.position_size > 0 and high >= longTakeProfitLevel
shortTakeProfitReached = strategy.position_size < 0 and low <= shortTakeProfitLevel

// Tracé des formes de prise de profit
plotshape(series=longTakeProfitReached, style=shape.xcross, location=location.belowbar, color=color.blue, size=size.small, title="Take Profit Long")
plotshape(series=shortTakeProfitReached, style=shape.xcross, location=location.abovebar, color=color.blue, size=size.small, title="Take Profit Short")

// Niveaux de stop loss pour les positions longues et courtes
longStopLossLevel = strategy.position_avg_price * (1 - stopLossPercentage / 100)
shortStopLossLevel = strategy.position_avg_price * (1 + stopLossPercentage / 100)

// Vérification si les niveaux de stop loss sont atteints
longStopLossReached = strategy.position_size > 0 and low <= longStopLossLevel
shortStopLossReached = strategy.position_size < 0 and high >= shortStopLossLevel

// Tracé des formes de stop loss
plotshape(series=longStopLossReached, style=shape.xcross, location=location.belowbar, color=color.red, size=size.small, title="Stop Loss Long")
plotshape(series=shortStopLossReached, style=shape.xcross, location=location.abovebar, color=color.red, size=size.small, title="Stop Loss Short")

// Fermeture des positions en cas de prise de profit ou de stop loss
strategy.close("Long", when=longTakeProfitReached or longStopLossReached)
strategy.close("Short", when=shortTakeProfitReached or shortStopLossReached)




Mehr