Estrategia de tendencia de ondas con múltiples stop loss y múltiples take profit


Fecha de creación: 2023-12-01 18:09:12 Última modificación: 2023-12-01 18:09:12
Copiar: 0 Número de Visitas: 814
1
Seguir
1619
Seguidores

Estrategia de tendencia de ondas con múltiples stop loss y múltiples take profit

Descripción general

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.

Principio de estrategia

El indicador central de la estrategia es el indicador de tendencia de ondas (WaveTrend), que consta de tres partes:

  1. AP: El precio promedio = (el precio más alto + el precio más bajo + el precio de cierre) / 3

  2. ESA: n1 de la AP

  3. 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

  4. TCI: n2 EMA de CI, es decir, línea de tendencia de onda 1 ((WT1))

  5. 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.

Ventajas estratégicas

  1. Utiliza el indicador de tendencias de ondas para rastrear automáticamente las tendencias y evitar errores de juicio
  2. Aumentar el segundo stop para controlar las pérdidas individuales
  3. Los precios de parada múltiple para maximizar los beneficios
  4. EMA filtra, filtra las falsas señales, mejora la tasa de ganancias

Riesgo y optimización de la estrategia

  1. No filtrar el cambio de tendencia podría causar pérdidas
  2. La configuración incorrecta de los parámetros puede causar transacciones demasiado frecuentes
  3. Se pueden probar diferentes combinaciones de parámetros, optimizar los parámetros
  4. Se puede considerar una reversión de la tendencia en combinación con otros indicadores

Resumir

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.

Código Fuente de la Estrategia
/*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)