이 크로스오버 시스템은 원래 유릭 리서치에 의해 개념화되어 웹 사이트에서 세상에 공개되었습니다.
이 지표는 더 빠른 주리크 이동 평균 (JURIC MOVING AVERAGE, JMA) 와 더 느린 이중 가중 이동 평균 (DWMA, Double Weighted Moving Average) 으로 구성된다. JMA 라인이 DWMA 라인의 위를 넘을 때 긴 신호가 표시된다. JMA 라인이 DWMA 라인의 아래를 넘을 때 짧은 신호가 표시된다. JMA 라인이 방향을 뒤집을 때 수익 신호가 표시된다. 이 지표에는 신호에 대한 경고가 포함되어 있다.
기본 설정은 어떤 시간 프레임에도 최적화되지 않습니다. JMA와 DWMA 라인 모두 기본 설정으로 숨겨집니다.
@everget의 크레딧으로 Jurik Moving Average를 재창조했습니다.
백테스트
/*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)