세 개의 SMA 크로스오버 모멘텀 전략은 시장 트렌드를 추적하는 전형적인 기술 지표 전략이다. 16~36~72주기 간단한 이동 평균을 결합하고, 트렌드 방향이 상대적으로 명확할 때 긴 또는 짧은 포지션을 취하기 위한 필터로 카우프만 적응 이동 평균 (KAMA) 과 함께 시장 트렌드를 결정하기 위해 상승 및 하락 크로스오버를 사용합니다.
이 전략의 핵심 지표는 16~36~72주기 간단한 이동 평균이다. 단기 SMA가 긴 기간 중 1주기를 상향으로 넘으면 시장이 상승 추세로 진입한다는 신호가 된다. 단기 SMA가 긴 기간 중 1주기를 하향 추세로 넘으면 시장이 하향 추세로 진입한다는 신호가 된다. 예를 들어, 16주기 SMA가 36주기 SMA와 72주기 SMA를 넘으면 상승 신호이다. 16주기 SMA가 36주기 SMA와 72주기 SMA를 넘으면 하락 신호이다.
카우프만 적응 이동 평균 (KAMA) 은 트렌드가 불분명할 때 잘못된 신호를 피하기 위한 필터 역할을 한다. SMA 크로스오버 신호는 KAMA가 가속되지 않거나 느려지지 않는 모드 (선형 단계) 에 있을 때만 트리거된다.
이 전략은 트렌드가 상대적으로 명확할 때 긴 또는 짧은 포지션을 취하기 위해 SMA 크로스오버 상황을 추적합니다. 긴 조건은 선형 KAMA와 함께 36-SMA와 72-SMA를 넘는 16-SMA를 넘는 것입니다. 짧은 조건은 선형 KAMA와 함께 36-SMA와 72-SMA를 넘는 16-SMA입니다.
이 전략의 장점은 다음과 같습니다.
이 전략에는 몇 가지 위험도 있습니다.
위험은 SMA 매개 변수를 조정하거나 스톱 로스 제약을 설정하거나 매우 변동성 있는 시장에만 적용함으로써 줄일 수 있습니다.
전략은 다음과 같은 방법으로 최적화 될 수 있습니다.
세 개의 SMA 크로스오버 모멘텀 전략은 전반적으로 상당히 고전적이고 실용적인 트렌드 추후 전략이다. 중장기 시장 트렌드를 다기간에 걸쳐서 효과적으로 판단하고 소음을 필터한다. 포지셔널 트레이딩의 타이밍 참조 지표 중 하나로 작용할 수 있다. 그러나 이 전략은 더 다양한 시장에서 서기 위해 추가 향상과 최적화를 필요로 하는 몇 가지 약점도 있다.
/*backtest start: 2023-11-24 00:00:00 end: 2023-12-24 00:00: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/ // © Wielkieef //@version=5 strategy(title='Three SMA-crossover strategy [30min] ', overlay=true, pyramiding=1, initial_capital=10000, default_qty_type=strategy.cash, default_qty_value=10000, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.03) src = close Length1 = input.int(16, title=' 1-SMA Lenght', minval=1, group='SMA') Length2 = input.int(36, title=' 2-SMA Lenght', minval=1, group='SMA') Length3 = input.int(72, title=' 3-SMA Lenght', minval=1, group='SMA') SMA1 = ta.sma(close, Length1) SMA2 = ta.sma(close, Length2) SMA3 = ta.sma(close, Length3) Long_ma = SMA1 > SMA2 and SMA2 > SMA3 Short_ma = SMA1 < SMA2 and SMA2 < SMA3 LengthMainSMA = input.int(100, title=' Trend SMA ', minval=1) SMAas = ta.sma(src, LengthMainSMA) // Powered Kaufman Adaptive Moving Average by alexgrover (modificated by Wielkieef) lengthas = input.int(50, title=' KAMA Lenght') sp = input.bool(true, title=' Self Powered') er = math.abs(ta.change(close, lengthas)) / math.sum(math.abs(ta.change(close)), lengthas) pow = sp ? 1 / er : 2 per = math.pow(math.abs(ta.change(close, lengthas)) / math.sum(math.abs(ta.change(close)), lengthas), pow) a = 0. a := per * src + (1 - per) * nz(a[1], src) mad4h = 0. a_f = a / a[1] > .999 and a / a[1] < 1.001 ///. Bar_color = close > SMAas ? color.green : Long_ma ? color.blue : Short_ma ? color.maroon : color.gray barcolor(color=Bar_color) long_cond = Long_ma and SMAas < close and not a_f and close > a short_cond = Short_ma and SMAas > close and not a_f and close < a long_stop = Short_ma and SMAas < close short_stop = Long_ma and SMAas > close SMA1plot = plot(SMA1, color=Bar_color, linewidth=2) SMA2plot = plot(SMA2, color=Bar_color, linewidth=4) SMA3plot = plot(SMA3, color=Bar_color, linewidth=2) fill(SMA1plot,SMA3plot,title="RANGE " ,color = color.new(Bar_color, 50)) if long_cond strategy.entry('Long', strategy.long) if short_cond strategy.entry('Short', strategy.short) strategy.close_all(when=long_stop or short_stop) //by wielkieef