
La estrategia es la estrategia de tendencia de ola original de LazyBear, con la adición de un segundo stop loss, varios precios de stop loss y un filtro EMA de alto marco de tiempo. Utiliza indicadores de tendencia de ola para generar señales de negociación, y luego combina filtros EMA y gestión de stop loss para automatizar el seguimiento de tendencias.
El indicador central de la estrategia es el indicador de tendencia de ondas (WaveTrend), que consta de tres partes:
AP: El precio promedio = (el precio más alto + el precio más bajo + el precio de cierre) / 3
ESA: n1 de la AP
CI: ((AP-ESA) / (0,015 × n1 de la etapa de la AP-ESA) de un valor absoluto de n1 de la etapa de la EMA
TCI: n2 EMA de CI, es decir, línea de tendencia de onda 1 ((WT1))
WT2: SMA de 4 ciclos en WT1
Haga más cuando el WT1 atraviesa el WT2 produciendo un tenedor de oro; cuando el WT1 atraviesa el WT2 produciendo un tenedor de oro, haga un par.
Además, la estrategia también introdujo el marco de tiempo alto EMA como un filtro, que solo puede hacer más cuando el precio está por encima del EMA, y hacer menos cuando está por debajo del EMA, para filtrar algunas señales falsas.
La estrategia tiene en cuenta múltiples dimensiones, como el seguimiento de tendencias, el control de riesgos y la maximización de ganancias. La estrategia capta automáticamente las tendencias a través de indicadores de tendencias de ondas, se combina con un filtro EMA para mejorar la eficiencia de las operaciones y controlar el riesgo al mismo tiempo que capta las tendencias. Es una estrategia de seguimiento de tendencias de alta eficiencia y estabilidad.
/*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)