Diese Strategie basiert auf der ursprünglichen WaveTrend-Strategie von LazyBear, mit zusätzlichen Funktionen wie sekundärem Stop-Loss, mehreren Take-Profit-Levels und einem hohen Zeitrahmen-EMA-Filter.
Der Kernindikator dieser Strategie ist der WaveTrend, der aus drei Komponenten besteht:
AP: Durchschnittspreis = (Höchster + Tiefster + Schließen) / 3
ESVG: EMA der AP für n-Perioden
CI: (AP - ESVK) / (0,015 * N1-Perioden EMA des absoluten Wertes von (AP - ESVK))
TCI: N2-Perioden-EMA von CI, auch als WaveTrend Line 1 (WT1) bezeichnet
WT2: 4-Perioden-SMA von WT1
Eine Longposition wird eröffnet, wenn WT1 über WT2 (goldenes Kreuz) überschreitet, und geschlossen, wenn WT1 unter WT2 (Todeskreuz) überschreitet.
Darüber hinaus wird ein EMA-Filter mit hohem Zeitrahmen implementiert, um falsche Signale zu vermeiden, so dass nur lange Trades getätigt werden, wenn der Preis über der EMA liegt und kurze Trades unterhalb der EMA.
Automatisch Trends mit WaveTrend ohne manuelles Urteilen verfolgen
Sekundärer Stop-Loss begrenzt den Einzelhandelsverlust
Mehrfache Gewinnspielräume maximieren die Gewinngewinnung
Der EMA-Filter verbessert die Gewinnrate, indem er falsche Signale vermeidet
Wenn keine Trendumkehr erkannt wird, kann dies zu Verlusten führen.
Eine schlechte Einstellung der Parameter führt zu einem Überhandel
Verschiedene Parametermengen können für die Optimierung getestet werden
Überlegen Sie zusätzliche Indikatoren für die Umkehrerkennung
Diese Strategie beinhaltet umfassend Trendverfolgung, Risikokontrolle und Gewinnmaximierung durch die automatische Trenderkennung von WaveTrend, EMA-Filter zur Verbesserung der Effizienz und Stop-Loss/Take-Profit-Management, um den Trendhandel und die Risikokontrolle auszugleichen.
/*backtest start: 2023-10-31 00:00:00 end: 2023-11-30 00:00:00 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/ // © undacovacobra //@version=4 strategy("WaveTrend Strategy [LazyBear] with Secondary Stop Loss", overlay=true) // Input parameters n1 = input(10, "Channel Length") n2 = input(21, "Average Length") obLevel1 = input(60, "Over Bought Level 1") obLevel2 = input(53, "Over Bought Level 2") osLevel1 = input(-60, "Over Sold Level 1") osLevel2 = input(-53, "Over Sold Level 2") useEmaFilter = input(false, "Use EMA Filter") emaLength = input(50, "EMA Length") emaTimeFrame = input("60", "EMA Time Frame") tradeMode = input("Both", "Trade Mode", options=["Long Only", "Short Only", "Both"]) useSecondarySL = input(false, "Use Secondary Stop Loss") slPercentage = input(5.0, "Stop Loss Percentage (%)") // WaveTrend Indicator Calculations ap = hlc3 esa = ema(ap, n1) d = ema(abs(ap - esa), n1) ci = (ap - esa) / (0.015 * d) tci = ema(ci, n2) wt1 = tci wt2 = sma(wt1, 4) // EMA Calculation with Selected Time Frame getEma(timeFrame) => security(syminfo.tickerid, timeFrame, ema(close, emaLength)) emaFilter = getEma(emaTimeFrame) // Secondary Stop Loss Calculation longStopPrice = strategy.position_avg_price * (1 - slPercentage / 100) shortStopPrice = strategy.position_avg_price * (1 + slPercentage / 100) // Long Entry and Exit Conditions with EMA Filter and Trade Mode longEntry = crossover(wt1, wt2) and wt2 < osLevel1 and (not useEmaFilter or close > emaFilter) and (tradeMode == "Long Only" or tradeMode == "Both") if (longEntry) strategy.entry("Long", strategy.long) longExit = crossunder(wt1, wt2) and wt2 > obLevel1 if (longExit) strategy.close("Long") if (useSecondarySL and strategy.position_size > 0 and low < longStopPrice) strategy.close("Long", comment="SL Hit") // Short Entry and Exit Conditions with EMA Filter and Trade Mode shortEntry = crossunder(wt1, wt2) and wt2 > obLevel1 and (not useEmaFilter or close < emaFilter) and (tradeMode == "Short Only" or tradeMode == "Both") if (shortEntry) strategy.entry("Short", strategy.short) shortExit = crossover(wt1, wt2) and wt2 < osLevel1 if (shortExit) strategy.close("Short") if (useSecondarySL and strategy.position_size < 0 and high > shortStopPrice) strategy.close("Short", comment="SL Hit") // Plotting plot(0, color=color.gray) plot(obLevel1, color=color.red) plot(osLevel1, color=color.green) plot(obLevel2, color=color.red, style=plot.style_cross) plot(osLevel2, color=color.green, style=plot.style_cross) plot(wt1, color=color.green) plot(wt2, color=color.red, style=plot.style_cross) plot(wt1-wt2, color=color.blue, style=plot.style_area, transp=80) plot(emaFilter, color=color.blue)