FRAMA 지표에 기초한 FraMA와 MA의 크로스오버 거래 전략

저자:차오장, 날짜: 2024-01-15 14:38:48
태그:

img

요약

이 전략은 빠른 이동 평균 라인 ma_fast과 느린 이동 평균 라인 ma_slow을 먼저 계산하고 FRAMA 적응 이동 평균 라인과 결합합니다. ma_fast이 ma_slow을 넘을 때 길게 이동하고 ma_slow이 ma_fast 이하로 넘거나 FRAMA가 닫기 가격 이하로 떨어지면 포지션을 닫습니다.

전략 논리

  1. 13일 간 간단한 이동평균 ma_fast과 26일 간 간단한 이동평균 ma_slow을 계산합니다.

  2. FRAMA 적응 이동 평균 라인 아웃을 계산합니다. FRAMA 공식은 복잡하며 주요 아이디어는 가격의 최고, 최저 및 변동성에 따라 이동 평균의 부드러움 α를 동적으로 조정하는 것입니다.

  3. ma_fast이 ma_slow을 넘을 때 장거리로 이동합니다. 이것은 단기 이동 평균이 상승하기 시작하고 장기보다 더 빨리 움직이고 트렌드 특성에 부합한다는 것을 나타냅니다.

  4. 마_슬로우가 마_프스트 이하로 넘어갈 때 또는 FRAMA가 닫기 가격 이하로 떨어질 때 포지션을 닫습니다. 이것은 트렌드 역전 신호를 나타냅니다.

이점 분석

  1. 이중 이동 평균 시스템과 적응 이동 평균 시스템의 장점을 결합합니다. 이중 MA 시스템은 트렌드를 잘 잡는 반면 적응 MA 시스템은 소음을 더 잘 필터합니다.

  2. FRAMA 지표는 자동으로 매개 변수를 조정하여 수동 매개 변수 조정의 주관성을 피합니다.

  3. 두 개의 출구 신호를 사용하면 트렌드 반전을 적시에 감지 할 수 있습니다.

위험 분석

  1. 이중 이동 평균 크로스오버는 윙사브를 가질 수 있으며, 간헐적 손실을 초래할 수 있습니다.

  2. 적응적인 이동평균은 더 많은 매개 변수를 도입하고, 과도한 적응을 위험합니다.

  3. 거래량 필터 없이 가격 요소만 고려하고, 따라서 기회를 놓칠 수 있습니다.

최적화

  1. 최적의 조합을 찾기 위해 다른 MA 기간을 테스트합니다.

  2. 부피 확인을 추가하여 잘못된 신호를 피합니다. 예를 들어 부피 스파이크가 필요합니다.

  3. 전략이 더 견고하기 위해 입출입 규칙을 최적화하십시오. 예를 들어 계속 패턴에서 신호만 취합니다.

결론

이 전략은 이중 이동 평균 크로스오버와 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())

더 많은