
Die Strategie ist die ursprüngliche Wave-Trend-Strategie von LazyBear, die einen zweiten Stop-Loss, mehrere Stop-Preise und einen EMA-Filter für hohe Zeitrahmen hinzufügt. Sie generiert Handelssignale mit Wellen-Trend-Indikatoren und kombiniert EMA-Filterung und Stop-Loss-Management, um automatisierte Trend-Tracking-Transaktionen zu ermöglichen.
Der Kernindikator der Strategie ist der WaveTrend-Indikator, der aus drei Teilen besteht:
AP: Durchschnittspreis = (Höchster Preis + niedrigerer Preis + Abschlusskurs) / 3
ESA: n1 EMA der AP
CI: ((AP-ESA) / (0,015 × n1-Termine EMA des AP-ESA) mit n1-Termine EMA des absoluten Wertes
TCI: n2 EMA der CI, also Wellen-Trendlinie 1 ((WT1)
WT2: 4-Zyklus-SMA von WT1
Wenn WT1 durch WT2 Goldfork erzeugt, mehr zu tun; wenn WT1 unter WT2 durch WT2 Todesfork erzeugt, die Position zu erleichtern.
Darüber hinaus wird die Strategie mit einem hohen Zeitfenster EMA als Filter eingesetzt, der nur dann überschreitet, wenn der Preis höher als der EMA ist, und nur dann leer ist, wenn der Preis niedriger als der EMA ist, um einige falsche Signale zu filtern.
Die Strategie umfasst mehrere Dimensionen wie Trendverfolgung, Risikokontrolle und Gewinnmaximierung, um Trends automatisch durch Wellen-Trendindikatoren zu erfassen, die in Kombination mit EMA-Filtern die Handels-Effizienz steigern und gleichzeitig die Risiken bei der Erfassung von Trends kontrollieren. Eine effiziente und stabile Trendverfolgungsstrategie. Durch die weitere Optimierung der Parameter und die Erhöhung der Umkehrung kann die Anwendbarkeit der Strategie weiter erweitert werden.
/*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)