La estrategia de trading de tendencia de onda basada en LazyBear

El autor:¿ Qué pasa?, Fecha: 2023-12-19 12:07:14
Las etiquetas:

img

Resumen general

Esta es una estrategia comercial basada en el indicador de tendencia de onda de LazyBear. La estrategia identifica el sentimiento del mercado mediante el cálculo de la tendencia de onda de las fluctuaciones de precios, y toma decisiones largas y cortas en consecuencia.

Estrategia lógica

El núcleo de esta estrategia es el indicador de tendencia de onda de LazyBear. Primero calcula el precio promedio (AP), luego el promedio móvil exponencial de AP (ESA) y el movimiento del precio absoluto (D). Basado en ESA y D, la estrategia calcula el índice de volatilidad (CI), que luego se alimenta en un promedio móvil exponencial para generar la línea de tendencia de onda (WT). WT se procesa en WT1 y WT2 utilizando promedios móviles simples. Cuando WT1 cruza WT2, activa la cruz dorada y se hace largo. Cuando WT1 cruza por debajo de WT2, activa la cruz de muerte y se hace corto.

Análisis de ventajas

Se trata de una estrategia muy sencilla pero práctica de tendencia.

  1. Identifica la tendencia de los precios y el sentimiento del mercado claramente basado en el indicador de tendencia de onda
  2. Lógica de negociación simple de ir largo / corto basado en cruces de oro / muerte de las líneas WT
  3. Parámetros personalizables para ajustar la sensibilidad del WT para diferentes ciclos
  4. Flexibilidad para añadir filtros adicionales, como la ventana de tiempo de negociación

Análisis de riesgos

Esta estrategia tiene algunos riesgos:

  1. Como una tendencia que sigue la estrategia, puede generar muchas señales falsas durante los mercados de rango
  2. La naturaleza tardía de WT puede causar vueltas perdidas
  3. Los parámetros predeterminados pueden no ser adecuados para todos los productos y ciclos
  4. No hay mecanismo de stop loss, el período de retención puede ser muy largo

Las principales soluciones son:

  1. Optimizar los parámetros para ajustar la sensibilidad de WT
  2. Añadir otros indicadores de confirmación para evitar señales falsas
  3. Emplear stop loss y tomar ganancias
  4. Limitar las operaciones o posiciones diarias

Direcciones de optimización

Hay espacio para una mayor optimización:

  1. Optimizar los parámetros de WT para una mejor sensibilidad o estabilidad
  2. Utilizar diferentes conjuntos de parámetros basados en ciclos
  3. Añadir indicadores como el volumen, la volatilidad para confirmar
  4. Agregue stop loss y take profit
  5. Enriquecer la lógica comercial como la pirámide, el comercio de la red
  6. Explorar mejores características y reglas utilizando el aprendizaje automático

Resumen de las actividades

En resumen, esta es una estrategia de seguimiento de tendencias muy simple y práctica. Al modelar la tendencia de onda de las fluctuaciones de precios, identifica las condiciones de mercado sobrecompradas y sobrevendidas para generar señales comerciales utilizando cruces de oro y cruces de muerte WT. La estrategia es fácil de implementar, pero puede requerir una mayor optimización para la sensibilidad y estabilidad. Como estrategia de seguimiento de tendencias, también necesita filtros y lógica adicionales para evitar señales falsas. En general, esto sirve como una plantilla de estrategia útil con mucho espacio para mejoras.


/*backtest
start: 2023-11-18 00:00:00
end: 2023-12-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//
// @author LazyBear
//
// If you use this code in its original/modified form, do drop me a note. 
//
//@version=4
     
// === INPUT BACKTEST RANGE ===
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2021, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

// === INPUT SHOW PLOT ===
showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

// === FUNCTION EXAMPLE ===
start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true       // create function "within window of time"

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")
 
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)

plot(0, color=color.gray)
plot(obLevel1, color=color.red)
plot(osLevel1, color=color.green)
plot(obLevel2, color=color.red, style=3)
plot(osLevel2, color=color.green, style=3)

plot(wt1, color=color.white)
plot(wt2, color=color.fuchsia)
plot(wt1-wt2, color=color.new(color.blue, 80), style=plot.style_area)

//Strategy
strategy(title="T!M - Wave Trend Strategy", overlay = false, precision = 8, max_bars_back = 200, pyramiding = 0, initial_capital = 1000, currency = currency.NONE, default_qty_type = strategy.cash, default_qty_value = 1000, commission_type = "percent", commission_value = 0.1, calc_on_every_tick=false, process_orders_on_close=true)
    
longCondition  = crossover(wt1, wt2)
shortCondition = crossunder(wt1, wt2)

strategy.entry(id="Long Entry", comment="buy", long=true, when=longCondition and window())
strategy.close("Long Entry", comment="sell", when=shortCondition and window())      

//strategy.entry(id="Short Entry", long=false, when=shortCondition)

Más.