Esta estrategia se llama
La estrategia emplea las siguientes tres medias móviles:
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:
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.
Las ventajas de esta estrategia incluyen:
Los riesgos de esta estrategia también incluyen:
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.
Optimizaciones posibles para esta estrategia:
La estrategia
/*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)