Ü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:
Berechnung des durchschnittlichen Preises ap = ((Höchstpreis + Mindestpreis + Abschlusspreis) / 3)
Wir berechnen die EMA von ap für den n1-Zyklus und erhalten eine Esa.
Berechnen Sie die Absolute Differenz zwischen ap und esa in der n1-Zeitrahmen-EMA, und erhalten d
Berechnung der Wellenlinie: ci=(ap-esa)/(0.015*d)
Wir berechnen die EMA für den n2-Zyklus ci und erhalten die endgültige Wellenlinie tci, also wt1.
Wir berechnen die 4-Zyklus-SMA von wt1 und erhalten wt2.
Horizontale Abbildungen von Überkauf- und Überverkaufszonen obLevel 1/2 und osLevel 1/2
Kaufsignale erzeugt, wenn wt1 über obLevel2-Linien fährt; Verkaufsignale erzeugt, wenn wt1 über osLevel2-Linien fährt
Hinzufügen von Equipoise EmaFilter und TransaktionsvolumenFilter als Filterbedingungen, um Fehlsignale zu vermeiden
Eintritts- und Ausstiegsquote
Die Vorteile:
Die Wellenlinien sind besser in der Umwandlung von mehreren Räumen und können Trends effektiv erfassen.
Die Kombination von Ebenen und Handelsvolumen mit doppelter Filterung bietet mehr Zuverlässigkeit
Die Berechnung von mehreren Parametergruppen vermeidet die Einschränkung eines einzigen Indikators
Setzen Sie ein Stop-Loss, um einen Teil des Gewinns zu sperren und Risiken effektiv zu kontrollieren
Risiken und Schwächen:
Die Auswahl der Parameter kann in einigen Fällen zu schlechter Leistung oder zu einer Überanpassung führen
Es gibt keine eindeutigen Richtlinien für die Wahl der optimalen Parameter.
Die größeren Marktbedingungen werden nicht in das Signal einbezogen
Gefahr von Flaggeeffekten bei Einsatz in begrenzten oder schwankenden Märkten
Fehlen von Ausnahmeregelungen abgesehen von Gewinn/Verlust
Die Optimierungsrichtung:
Tests von Parametersätzen auf verschiedenen Zeitrahmen und Assets, um optimale Werte zu finden
Kombination von Volatilitätsindikatoren, um Signale zu vermeiden, wenn die Volatilität niedrig ist
Zusätzliche Indikatoren wie RSI hinzugefügt, um die Signalgenauigkeit zu verbessern
Bauen Sie ein maschinelles Lernmodell, um die besten Parameter für bestimmte Vermögenswerte zu finden
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)