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.
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.
Se trata de una estrategia muy sencilla pero práctica de tendencia.
Esta estrategia tiene algunos riesgos:
Las principales soluciones son:
Hay espacio para una mayor optimización:
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
/*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)