Verbesserte Wellenverfolgungsstrategien

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

改进波浪跟踪策略

Übersicht: Dies ist eine Trendverfolgungsstrategie, bei der ein Wellenindikator angewendet wird. Es erhält eine Wellenlinie, indem es die beweglichen Durchschnittswerte der durchschnittlichen Preise und die beweglichen Durchschnittswerte der absolut schlechten Preise berechnet. Die Strategie erzeugt ein Handelssignal, indem sie die Kreuzung der Wellenlinie mit der Überkauf-Überverkaufszone überwacht.

Die Strategie:

  1. Berechnung des durchschnittlichen Preises ap = ((Höchstpreis + Mindestpreis + Abschlusspreis) / 3)

  2. Wir berechnen die EMA von ap für den n1-Zyklus und erhalten eine Esa.

  3. Berechnen Sie die Absolute Differenz zwischen ap und esa in der n1-Zeitrahmen-EMA, und erhalten d

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

  5. Wir berechnen die EMA für den n2-Zyklus ci und erhalten die endgültige Wellenlinie tci, also wt1.

  6. Wir berechnen die 4-Zyklus-SMA von wt1 und erhalten wt2.

  7. Horizontale Abbildungen von Überkauf- und Überverkaufszonen obLevel 1/2 und osLevel 1/2

  8. Kaufsignale erzeugt, wenn wt1 über obLevel2-Linien fährt; Verkaufsignale erzeugt, wenn wt1 über osLevel2-Linien fährt

  9. Hinzufügen von Equipoise EmaFilter und TransaktionsvolumenFilter als Filterbedingungen, um Fehlsignale zu vermeiden

  10. Eintritts- und Ausstiegsquote

Die Vorteile:

  1. Die Wellenlinien sind besser in der Umwandlung von mehreren Räumen und können Trends effektiv erfassen.

  2. Die Kombination von Ebenen und Handelsvolumen mit doppelter Filterung bietet mehr Zuverlässigkeit

  3. Die Berechnung von mehreren Parametergruppen vermeidet die Einschränkung eines einzigen Indikators

  4. Setzen Sie ein Stop-Loss, um einen Teil des Gewinns zu sperren und Risiken effektiv zu kontrollieren

Risiken und Schwächen:

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

  2. Es gibt keine eindeutigen Richtlinien für die Wahl der optimalen Parameter.

  3. Die größeren Marktbedingungen werden nicht in das Signal einbezogen

  4. Gefahr von Flaggeeffekten bei Einsatz in begrenzten oder schwankenden Märkten

  5. Fehlen von Ausnahmeregelungen abgesehen von Gewinn/Verlust

Die Optimierungsrichtung:

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

  2. Kombination von Volatilitätsindikatoren, um Signale zu vermeiden, wenn die Volatilität niedrig ist

  3. Zusätzliche Indikatoren wie RSI hinzugefügt, um die Signalgenauigkeit zu verbessern

  4. Bauen Sie ein maschinelles Lernmodell, um die besten Parameter für bestimmte Vermögenswerte zu finden

  5. Verstärkte Ausstieg durch das Hinzufügen von Stop-Loss-Tracking oder Ausstiegs auf der Grundlage von plötzlichen volatilen Expansionsereignissen

Zusammenfassung:

Es ist eine Strategie, die eine Kombination von WaveLine und Hilfsindikatorentwicklung beinhaltet. Sie nutzt die Eigenschaften der WaveLine, um effektiv Trendumwandlungen zu erkennen, ergänzt durch Mittel- und Handelsvolumenfilterung, um falsche Signale zu vermeiden, und kann die meisten Mittel- und Langstreckentrends abrufen.


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




Weitere Informationen