Este sistema cruzado fue conceptualizado originalmente por Jurik Research y hecho público al mundo en su sitio web.
El indicador se compone del promedio móvil de Jurik (JMA) más rápido y el promedio móvil doble ponderado (DWMA) más lento. Una señal larga se muestra cuando la línea JMA cruza por encima de la línea DWMA (indicando una posible inversión de tendencia). Una señal corta se muestra cuando la línea JMA cruza por debajo de la línea DWMA. Las señales de ganancias se muestran cuando la línea JMA invierte direcciones.
Las configuraciones predeterminadas no están optimizadas para ningún marco de tiempo.
Crédito a @everget por la recreación del promedio móvil de Jurik en pinecsript.
Prueba posterior
/*backtest start: 2022-04-07 00:00:00 end: 2022-05-06 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/ // © multigrain // @version=5 indicator('jma + dwma by multigrain', 'jma + dwma', overlay=true) //NAME TYPE DEFVAL TITLE MIN MAX GROUP longs = input.bool (true, 'Enable longs?') shorts = input.bool (true, 'Enable shorts?') jmaSrc = input.source (close, 'JMA Source', group='JMA') jmaLen = input.int (7, 'JMA Length', 0, 100, group='JMA') jmaPhs = input.int (50, 'JMA Phase', -100, 100, group='JMA') jmaPwr = input.float (1, 'JMA Power', 0.1, group='JMA') dwmaSrc = input.source (close, 'DWMA Source', group='DWMA') dwmaLen = input.int (10, 'DWMA Length', 1, 100, group='DWMA') // Jurik Moving Average f_jma(_src, _length, _phase, _power) => phaseRatio = _phase < -100 ? 0.5 : _phase > 100 ? 2.5 : _phase / 100 + 1.5 beta = 0.45 * (_length - 1) / (0.45 * (_length - 1) + 2) alpha = math.pow(beta, _power) jma = 0.0 e0 = 0.0 e0 := (1 - alpha) * _src + alpha * nz(e0[1]) e1 = 0.0 e1 := (_src - e0) * (1 - beta) + beta * nz(e1[1]) e2 = 0.0 e2 := (e0 + phaseRatio * e1 - nz(jma[1])) * math.pow(1 - alpha, 2) + math.pow(alpha, 2) * nz(e2[1]) jma := e2 + nz(jma[1]) jma // Double Weighted Moving Average f_dwma(_src, _length) => ta.wma(ta.wma(_src, _length), _length) // Calculations jma = f_jma (jmaSrc, jmaLen, jmaPhs, jmaPwr) dwma = f_dwma (dwmaSrc, dwmaLen) long = ta.crossover (jma, dwma) long_tp = ta.pivothigh (jma, 1, 1) and jma > dwma short_tp = ta.pivotlow (jma, 1, 1) and jma < dwma short = ta.crossunder (jma, dwma) if longs strategy.entry("Buy", strategy.long, when=long) strategy.close("Buy", when=long_tp) if shorts strategy.entry("Sell", strategy.short, when=short) strategy.close("Sell", when=short_tp)