이 전략은 빠른 이동 평균 라인 ma_fast과 느린 이동 평균 라인 ma_slow을 먼저 계산하고 FRAMA 적응 이동 평균 라인과 결합합니다. ma_fast이 ma_slow을 넘을 때 길게 이동하고 ma_slow이 ma_fast 이하로 넘거나 FRAMA가 닫기 가격 이하로 떨어지면 포지션을 닫습니다.
13일 간 간단한 이동평균 ma_fast과 26일 간 간단한 이동평균 ma_slow을 계산합니다.
FRAMA 적응 이동 평균 라인 아웃을 계산합니다. FRAMA 공식은 복잡하며 주요 아이디어는 가격의 최고, 최저 및 변동성에 따라 이동 평균의 부드러움 α를 동적으로 조정하는 것입니다.
ma_fast이 ma_slow을 넘을 때 장거리로 이동합니다. 이것은 단기 이동 평균이 상승하기 시작하고 장기보다 더 빨리 움직이고 트렌드 특성에 부합한다는 것을 나타냅니다.
마_슬로우가 마_프스트 이하로 넘어갈 때 또는 FRAMA가 닫기 가격 이하로 떨어질 때 포지션을 닫습니다. 이것은 트렌드 역전 신호를 나타냅니다.
이중 이동 평균 시스템과 적응 이동 평균 시스템의 장점을 결합합니다. 이중 MA 시스템은 트렌드를 잘 잡는 반면 적응 MA 시스템은 소음을 더 잘 필터합니다.
FRAMA 지표는 자동으로 매개 변수를 조정하여 수동 매개 변수 조정의 주관성을 피합니다.
두 개의 출구 신호를 사용하면 트렌드 반전을 적시에 감지 할 수 있습니다.
이중 이동 평균 크로스오버는 윙사브를 가질 수 있으며, 간헐적 손실을 초래할 수 있습니다.
적응적인 이동평균은 더 많은 매개 변수를 도입하고, 과도한 적응을 위험합니다.
거래량 필터 없이 가격 요소만 고려하고, 따라서 기회를 놓칠 수 있습니다.
최적의 조합을 찾기 위해 다른 MA 기간을 테스트합니다.
부피 확인을 추가하여 잘못된 신호를 피합니다. 예를 들어 부피 스파이크가 필요합니다.
전략이 더 견고하기 위해 입출입 규칙을 최적화하십시오. 예를 들어 계속 패턴에서 신호만 취합니다.
이 전략은 이중 이동 평균 크로스오버와 FRAMA 적응 이동 평균을 결합하여 매개 변수를 동적으로 조정하여 자동으로 시장 조건에 적응합니다. 이중 MAs는 트렌드를 잘 파악하는 반면 FRAMA는 소음을 필터합니다. 두 개의 출구 신호를 사용하여 전략을 더욱 견고하게 만듭니다. 다음 단계는 매개 변수 최적화 및 볼륨 필터를 추가하여 개선 할 수 있습니다.
/*backtest start: 2023-01-14 00:00:00 end: 2024-01-14 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Fractal Adaptive Moving Average",shorttitle="FRAMA",overlay=true) ma_fast = sma(close,13) ma_slow = sma(close,26) plot(ma_fast,color = green) plot(ma_slow, color = yellow) price = input(hl2) len = input(defval=16,minval=1) FC = input(defval=1,minval=1) SC = input(defval=198,minval=1) len1 = len/2 w = log(2/(SC+1)) H1 = highest(high,len1) L1 = lowest(low,len1) N1 = (H1-L1)/len1 H2 = highest(high,len)[len1] L2 = lowest(low,len)[len1] N2 = (H2-L2)/len1 H3 = highest(high,len) L3 = lowest(low,len) N3 = (H3-L3)/len dimen1 = (log(N1+N2)-log(N3))/log(2) dimen = iff(N1>0 and N2>0 and N3>0,dimen1,nz(dimen1[1])) alpha1 = exp(w*(dimen-1)) oldalpha = alpha1>1?1:(alpha1<0.01?0.01:alpha1) oldN = (2-oldalpha)/oldalpha N = (((SC-FC)*(oldN-1))/(SC-1))+FC alpha_ = 2/(N+1) alpha = alpha_<2/(SC+1)?2/(SC+1):(alpha_>1?1:alpha_) out = (1-alpha)*nz(out[1]) + alpha*price plot(out,title="FRAMA",color=purple,transp=0) entry() => crossover(ma_fast, ma_slow) and (out < close) exit() => crossover(ma_slow, ma_fast) or crossunder(out, close) strategy.entry(id= "MA cross", long = true, when = entry()) strategy.close(id= "MA cross", when = exit())