Esta estrategia se basa en la estrategia original de WaveTrend de LazyBear, con características adicionales como stop loss secundario, niveles de ganancia múltiple y filtro EMA de alto marco de tiempo.
El indicador central de esta estrategia es WaveTrend, que consta de tres componentes:
AP: Precio medio = (más alto + más bajo + cerrar) / 3
ECE: EMA de un período n del AP
CI: (AP - SEC) / (0,015 * N1-periodo EMA del valor absoluto de (AP - SEC))
TCI: EMA de n2 períodos de CI, también denominada WaveTrend Line 1 (WT1)
WT2: SMA de 4 períodos de WT1
Se abre una posición larga cuando WT1 cruza WT2 (cruz dorada) y se cierra cuando WT1 cruza WT2 (cruz de muerte).
Además, se implementa un filtro EMA de alto marco de tiempo para evitar señales falsas, de modo que las operaciones largas solo se realizan cuando el precio está por encima de la EMA y las operaciones cortas por debajo de la EMA.
Sigue las tendencias automáticamente usando WaveTrend sin necesidad de juzgar manualmente
Las pérdidas de detención secundarias limitan efectivamente las pérdidas de operaciones individuales
Los niveles múltiples de toma de ganancias maximizan la captura de ganancias
El filtro EMA mejora la tasa de ganancia al evitar señales falsas
No detecta la inversión de tendencia, puede causar pérdidas
La mala regulación de los parámetros conduce a una sobrecomercialización
Se pueden probar diferentes conjuntos de parámetros para la optimización
Considerar indicadores adicionales para la detección de la inversión
Esta estrategia incorpora de manera integral el seguimiento de tendencias, el control de riesgos y la maximización de ganancias a través de la detección automática de tendencias de WaveTrend, el filtro EMA para mejorar la eficiencia y la gestión de stop loss / take profit para equilibrar el comercio de tendencias y el control de riesgos. Es un sistema de seguimiento de tendencias eficiente y estable.
/*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)