Multi Take Profit y Stop Loss Tendencia de la ola de seguimiento de la estrategia

El autor:¿ Qué pasa?, Fecha: 2023-12-01 18:09:12
Las etiquetas:

img

Resumen general

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.

Estrategia lógica

El indicador central de esta estrategia es WaveTrend, que consta de tres componentes:

  1. AP: Precio medio = (más alto + más bajo + cerrar) / 3

  2. ECE: EMA de un período n del AP

  3. CI: (AP - SEC) / (0,015 * N1-periodo EMA del valor absoluto de (AP - SEC))

  4. TCI: EMA de n2 períodos de CI, también denominada WaveTrend Line 1 (WT1)

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

Ventajas

  1. Sigue las tendencias automáticamente usando WaveTrend sin necesidad de juzgar manualmente

  2. Las pérdidas de detención secundarias limitan efectivamente las pérdidas de operaciones individuales

  3. Los niveles múltiples de toma de ganancias maximizan la captura de ganancias

  4. El filtro EMA mejora la tasa de ganancia al evitar señales falsas

Riesgos y mejoras

  1. No detecta la inversión de tendencia, puede causar pérdidas

  2. La mala regulación de los parámetros conduce a una sobrecomercialización

  3. Se pueden probar diferentes conjuntos de parámetros para la optimización

  4. Considerar indicadores adicionales para la detección de la inversión

Conclusió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)



Más.