Verbesserung der Wellenverfolgungsstrategien


Erstellungsdatum: 2024-01-31 15:35:41 zuletzt geändert: 2024-01-31 15:35:41
Kopie: 0 Klicks: 669
1
konzentrieren Sie sich auf
1617
Anhänger

Verbesserung der Wellenverfolgungsstrategien

Beschreibung: Eine Trendverfolgungsstrategie, bei der Wave Indicator eingesetzt wird. Sie erzeugt eine Waveline, indem sie den Index-Moving Average des Durchschnittspreises und den Moving Average der absoluten Preisdifferenz berechnet. Die Strategie erzeugt ein Handelssignal, indem sie die Kreuzung der Wellenlinie mit dem überkauften und überverkauften Bereich überwacht.

Die Strategie:

  1. Berechnen Sie den Durchschnittspreis ap = ((höchster Preis + niedrigerer Preis + Abschlusskurs) / 3

  2. Berechnen Sie den EMA von ap für n1 Perioden und erhalten Sie es

  3. Berechnen Sie den n1-Zyklus-EMA der absoluten Differenz zwischen ap und esa und erhalten Sie d

  4. Berechnung der Wellenlinie: ci = ((ap-esa) / ((0.015*d)

  5. Berechnen Sie den EMA für die n2-Periode ci und erhalten Sie die endgültige Wellenlinie tci, d.h. wt1

  6. Berechnen Sie die 4-Perioden-SMA von wt1 und erhalten Sie wt2.

  7. Horizontale Linien für Überkauf- und Überverkaufszonen obLevel 12 und osLevel 12

  8. Ein Kaufsignal wird erzeugt, wenn die obLevel2-Leitung auf wt1 durchläuft; ein Verkaufsignal wird erzeugt, wenn die osLevel2-Leitung unterwt1 durchläuft

  9. Hinzufügen von einer MittellinieemaFilter und einer TransaktionsvolumeFilter als Filterbedingungen, um falsche Signale zu vermeiden

  10. Nach dem Eintritt ein Stop-Loss-Verhältnis einstellen und aus der Position aussteigen

Die Analyse der Stärken:

  1. Die Wellenlinie handhabt die Multifunktionsumwandlung besser und kann Trends effektiv erfassen.

  2. Hohe Zuverlässigkeit in Kombination mit einer Doppelfilterung von Gleichgewicht und Volumen

  3. Die Berechnung mit mehreren Parametern vermeidet die Einschränkungen eines einzelnen Indikators

  4. Ein Stop-Loss-System, mit dem Sie einen Teil des Gewinns sperren können, um Ihr Risiko zu kontrollieren

Risiken und Nachteile:

  1. Die Auswahl der Parameter kann in einigen Fällen zu schlechter Leistung oder Überpassung führen

  2. Es gibt keine klaren Anweisungen zur Auswahl der optimalen Parameter, es ist nur Versuch und Irrtum notwendig

  3. Nicht Einbeziehung der breiteren Marktbedingungen in die Signale

  4. Gefahr eines Feuerwerkseffekts bei Einsatz in eingeschränkten oder schwankenden Märkten

  5. Es gibt keine Ausstiegsregeln außer Gewinn/Verlust

Optimierung:

  1. Tests von Parameter-Sätzen auf verschiedenen Zeitrahmen und Assets, um optimale Werte zu finden

  2. In Kombination mit einem Volatilitätsindikator, um Signale in Zeiten niedriger Volatilität zu vermeiden

  3. Hinzufügen von zusätzlichen Indikatoren wie RSI, um die Signalgenauigkeit zu verbessern

  4. Erstellung eines maschinellen Lernmodells zur Suche nach optimalen Parametern für bestimmte Assets

  5. Verstärkte Ausstiege durch Hinzufügen von Tracking-Stopps oder Ausstiegs basierend auf plötzlichen volatilen Expansionsereignissen

Zusammenfassung:

Es handelt sich um eine Strategie, die Waveline und Hilfsindikatoren kombiniert. Sie nutzt die Waveline, um Trends zu erkennen, um falsche Signale zu vermeiden und den größten Teil der mittleren Longline-Trends zu nutzen. Die Strategie kann durch die Anpassung der Parameterkombinationen, die Kombination von mehr Indikatoren und die kontinuierliche Verbesserung von Methoden wie Maschinelles Lernen verbessert werden.

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