Tendencia de los destellos deslumbrantes siguiendo la estrategia

El autor:¿ Qué pasa?, Fecha: 2024-02-02 17:30:09
Las etiquetas:

img

Resumen general

Esta estrategia se llama Dazzling Bolts. Es una estrategia de seguimiento de tendencias basada en tres promedios móviles. Utiliza los cruces de líneas rápidas, medianas y lentas para determinar la tendencia del precio y establece objetivos y paradas basados en los valores ATR.

Estrategia lógica

La estrategia emplea las siguientes tres medias móviles:

  1. Promedio móvil ponderado de 13 períodos, para medir la tendencia a corto plazo
  2. Promedio móvil exponencial de 55 períodos, para la tendencia a mediano plazo
  3. Promedio móvil simple de 110 períodos, para tendencia a largo plazo

Cuando la línea rápida cruza por encima de la línea media y la línea media cruza por encima de la línea lenta, indica una tendencia alcista.

Para filtrar algunos trabajos de ruido, se establecen varias condiciones auxiliares:

  1. Los precios bajos de las últimas 5 velas fueron todos por encima de la línea media
  2. El precio bajo de las últimas 2 velas cayó por debajo de la línea media
  3. El precio de cierre de la última vela estaba por encima de la línea media.

Cuando se cumplen estos criterios, se activarán señales largas o cortas.

Los objetivos y paradas se colocan en función de ciertos múltiplos de los valores ATR.

Análisis de ventajas

Las ventajas de esta estrategia incluyen:

  1. El uso de una combinación de tres promedios móviles evita la posibilidad de que un solo indicador pueda inducir a error.
  2. Las múltiples condiciones auxiliares ayudan a mejorar la calidad de la señal filtrando el ruido.
  3. El ATR dinámico ayuda a controlar la pérdida de una sola operación.

Análisis de riesgos

Los riesgos de esta estrategia también incluyen:

  1. La combinación de medias móviles puede dar señales erróneas, lo que requiere pruebas retroactivas suficientes.
  2. La configuración incorrecta del multiplicador ATR puede provocar que los paramentos sean demasiado sueltos o apretados.
  3. Incapaz de filtrar eficazmente las fluctuaciones de precios de eventos repentinos.

Para mitigar los riesgos, ajustar adecuadamente los parámetros de la media móvil, optimizar el multiplicador ATR, establecer el período máximo de retención para evitar pérdidas excesivas en una sola operación.

Direcciones de optimización

Optimizaciones posibles para esta estrategia:

  1. Prueba de medias móviles de diferentes longitudes o tipos.
  2. Optimizar los parámetros de las condiciones auxiliares.
  3. Pruebe otros indicadores para la predicción de tendencias, por ejemplo, MACD, DMI, etc.
  4. Incorpore indicadores de volumen para filtrar las señales.

Resumen de las actividades

La estrategia Dazzling Bolts es generalmente un sistema de seguimiento de tendencias estable. Utiliza principalmente cruces de promedios móviles para determinar la dirección de la tendencia, con ciertas combinaciones de indicadores técnicos como medios auxiliares para filtrar algo de ruido. Aunque hay espacio para una mayor optimización, su riesgo general está controlado y es adecuado para invertir a lo largo de tendencias a medio y largo plazo.


/*backtest
start: 2024-01-02 00:00:00
end: 2024-02-01 00:00:00
period: 2h
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/
// © greenmask9

//@version=4
strategy("Dazzling Bolts", overlay=true)
//max_bars_back=3000

// 13 SMMA
len = input(10, minval=1, title="SMMA Period")
src = input(close, title="Source")
smma = 0.0
smma := na(smma[1]) ? sma(src, len) : (smma[1] * (len - 1) + src) / len

// 55 EMA
emalength = input(55, title="EMA Period")
ema = ema(close, emalength)

// 100 SMA
smalength = input(110, title="SMA Period")
sma = sma(close, smalength)

emaforce = input(title="Force trend with medium EMA", type=input.bool, defval=true)
offsetemavalue = input(defval = 6)

bullbounce = smma>ema and ema>sma and low[5]>ema and low[2]<ema and close[1]>ema and (ema[offsetemavalue]>sma or (not emaforce))
bearbounce = smma<ema and ema<sma and high[5]<ema and high[2]>ema and close[1]<ema and (ema[offsetemavalue]<sma or (not emaforce))
plotshape(bullbounce,  title= "Purple", location=location.belowbar, color=#ff33cc, transp=0, style=shape.triangleup, size=size.tiny, text="Bolts")
plotshape(bearbounce,  title= "Purple", location=location.abovebar, color=#ff33cc, transp=0, style=shape.triangledown, size=size.tiny, text="Bolts")
strategy.initial_capital = 50000
ordersize=floor(strategy.initial_capital/close)
longs = input(title="Test longs", type=input.bool, defval=true)
shorts = input(title="Test shorts", type=input.bool, defval=true)
atrlength = input(title="ATR length", defval=12)
atrm = input(title="ATR muliplier",type=input.float, defval=2)
atr = atr(atrlength)

target = close + atr*atrm
antitarget = close - (atr*atrm)

//limits and stop do not move, no need to count bars from since

bullbuy = bullbounce and longs and strategy.opentrades==0
bb = barssince(bullbuy)
bearsell = bearbounce and shorts and strategy.opentrades==0
bs = barssince(bearsell)

if (bullbuy)
    strategy.entry("Boltsup", strategy.long, ordersize)
    strategy.exit ("Bolts.close", from_entry="Boltsup", limit=target, stop=antitarget)
if (crossover(smma, sma))
    strategy.close("Boltsup", qty_percent = 100, comment = "Bolts.crossover")

if (bearsell)
    strategy.entry("Boltsdown", strategy.short, ordersize)
    strategy.exit("Bolts.close", from_entry="Boltsdown", limit=antitarget, stop=target)
if (crossunder(smma, sma))
    strategy.close("Boltsdown", qty_percent = 100, comment = "Bolts.crossover")

// if (bb<5)
//     bulltarget = line.new(bar_index[bb], target[bb], bar_index[0], target[bb], color=color.blue, width=2)
//     bullclose = line.new(bar_index[bb], close[bb], bar_index[0], close[bb], color=color.blue, width=2)
//     bullstop = line.new(bar_index[bb], antitarget[bb], bar_index[0], antitarget[bb], color=color.blue, width=2)
// if (bs<5)
//     bulltarget = line.new(bar_index[bs], antitarget[bs], bar_index[0], antitarget[bs], color=color.purple, width=2)
//     bullclose = line.new(bar_index[bs], close[bs], bar_index[0], close[bs], color=color.purple, width=2)
//     bullstop = line.new(bar_index[bs], target[bs], bar_index[0], target[bs], color=color.purple, width=2)


Más.