Concepto:
Hay una gran cantidad de promedios móviles disponibles.
Sin embargo, su eficacia es diferente.
La confirmación y el seguimiento de las tendencias requieren un gran número de medias móviles que se utilicen de manera diferente.
El concepto aquí es generar una media móvil combinada, cada tipo de MA puede ponderarse para proporcionar un mayor grado de confirmación de la tendencia.
Los pesos son configurables en configuración, y como muestra se ha utilizado una longitud de 50.
ATR no produjo un buen resultado, por lo que se ha mantenido como opcional.
La fuente puede ser modificada.
El indicador proporciona un buen valor de soporte de resistencia en el marco de tiempo más amplio. y también proporciona una indicación de ruptura y avería.
La condición de alerta ha sido hecha de tal manera que puede ser directamente portada a la discordia.
Para las alertas se debe configurar su propio mensaje.
Buen comercio.
/*backtest start: 2022-04-11 00:00:00 end: 2022-05-10 23:59: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/ // © bhavishya //@version=5 indicator("ESSMA", overlay=true) //inputs source = input(close, "Source", group="Source") length1 = input(50, "Length1", group = "Length") w1 = input.float(2.0, "SMA Weight", group="Weights") w2 = input.float(2.0, "EMA Weight", group="Weights") w3 = input.float(2.0, "WMA Weight", group="Weights") w4 = input.float(2.0, "SMMA Weight", group="Weights") w5 = input.float(2.0, "RMA Weight", group="Weights") useatr = input.bool(false, "Use ATR", group="ATR") atrLen = input.int(title="ATR Length", defval=14, group="ATR") // functions smma(src, length) => smma = 0.0 smma := na(smma[2]) ? ta.sma(src, length) : (smma[2] * (length - 1) + src) / length smma essma(src,length) => essma = 0.0 smma = smma(src * w4,length) ema = ta.ema(src * w2, length) sma = ta.sma(src * w1, length) wma = ta.wma(src * w3, length) rma = ta.rma(src * w5, length) essma := (smma/w4+ema/w2+sma/w1 - wma/w3 - rma/w5 + open + close)/(3) essma // calucations // atr and MAs atr = ta.atr(atrLen) usesource = useatr ? atr : source essma1 = essma(usesource, length1) sessma1 = ta.wma(essma1, length1) // plots p1 = plot(essma1, "ESSMA", color.green) ps1 = plot(sessma1, "ESSMA Smooth", color.red) bool up = na bool down = na if (ta.crossover(essma1,sessma1)) up := true if (ta.crossunder(essma1, sessma1)) down := true plotshape(up, style=shape.labelup, location = location.belowbar, color=color.lime, text="B", textcolor=color.black) plotshape(down, style=shape.labeldown, location = location.abovebar, color=color.orange, text="S", textcolor=color.black) // alerts alertcondition(up, "ESSMA UP", '{"content":"ESSMA BUY @ {{close}}" : "{{ticker}} int : {{interval}} - essma : {{plot_0}} / sessma {{plot_1}}"}') alertcondition(down, "ESSMA DOWN", '{"content":"ESSMA SELL @ {{close}}" : "{{ticker}} int : {{interval}} - essma :{{plot_0}} /sessma : {{plot_1}}"}') if up strategy.entry("Enter Long", strategy.long) else if down strategy.entry("Enter Short", strategy.short)