FRAMA 지표를 기반으로 한 MA 이동평균 교차 전략


생성 날짜: 2024-01-15 14:38:48 마지막으로 수정됨: 2024-01-15 14:38:48
복사: 1 클릭수: 691
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

FRAMA 지표를 기반으로 한 MA 이동평균 교차 전략

개요

이 전략은 먼저 빠른 이동 평균 ma_fast와 느린 이동 평균 ma_slow를 계산하고 FRAMA와 적응된 이동 평균을 결합하여 ma_slow을 마_fast에 부과하고 마_slow을 마_slow에 부과하거나 FRAMA를 마_slow에 부과하면 평형합니다.

전략 원칙

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

  2. FRAMA를 계산하기 FRAMA의 계산 공식은 더 복잡하며, 주요 아이디어는 가격의 최고값, 최저값 및 변동 동력에 따라 평균을 조정하는 평평함 α 이다.

  3. ma_fast에 ma_slow를 입었을 때 더 많이 니다. 이것은 단기 평균선이 상승하기 시작하여 장기 평균선에서 승리하여 트렌드의 특성에 부합하는 것을 나타냅니다.

  4. ma_slow 아래에서 ma_fast을 통과하거나 FRAMA 아래에서 마이너스를 통과할 때 평점. 이것은 트렌드 반전 신호를 나타냅니다.

우위 분석

  1. 쌍방평선 시스템과 자기 적응평선 시스템의 장점. 쌍방평선 시스템은 트렌드를 잘 포착하고, 자기 적응평선 시스템은 소음을 더 잘 어낼 수 있다.

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

  3. 동시적으로 두 개의 탈퇴 신호를 사용하여 트렌드 반전을 적시에 잡을 수 있습니다.

위험 분석

  1. 쌍평선 교차선의 잘못된 위치가 있을 가능성이 있으며, 간헐적인 손실이 발생할 수 있다.

  2. 이동 평균에 적응하는 것은 전략의 변수를 증가시키고, 과도한 최적화를 초래할 수 있다.

  3. 가격만 고려하고 거래량에 대한 필터링을 하지 않으면 기회를 놓칠 수 있습니다.

최적화 방향

  1. 다른 주기들의 평균선 조합을 테스트하여 최적의 파라미터를 찾을 수 있다.

  2. 거래량 확인을 추가하여 유효하지 않은 신호를 방지할 수 있다. 예를 들어 거래량 급증을 증가시키는 조건이다.

  3. 포지션 개시 및 포지션 조건을 최적화하여 전략을 더욱 안정화할 수 있다. 예를 들어, 지속형태의 돌파구에서만 포지션을 개시한다.

요약하다

이 전략은 쌍동선 교차와 FRAMA 자조평균선을 결합하여, 동적으로 매개 변수를 조정하여 시장 환경에 자동으로 적응한다. 쌍동선은 트렌드를 잡는 데 능숙하며, 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())