이중 이동 평균선과 FRAMA 지표를 기반으로 한 롱-숏 크로스오버 트레이딩 전략


생성 날짜: 2023-12-22 16:08:23 마지막으로 수정됨: 2023-12-22 16:08:23
복사: 0 클릭수: 801
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

이중 이동 평균선과 FRAMA 지표를 기반으로 한 롱-숏 크로스오버 트레이딩 전략

개요

이 전략은 먼저 13주기 및 26주기의 간단한 이동 평균을 계산하고 FRAMA 지수를 계산한다. 빠른 선이 아래에서 위로 느린 선을 뚫을 때 더 많이 하고, 빠른 선이 위에서 아래로 느린 선을 뚫을 때 또는 FRAMA 지표가 위에서 아래로 폐쇄 가격을 뚫을 때 평소한다.

전략 원칙

이 전략은 주로 쌍평균선 교차를 이용하여 거래 신호를 형성한다. 단기평균선이 아래에서 위쪽으로 장기평균선을 뚫을 때, 시세가 하향으로 변하는 것을 의미하며, 더 많이 한다. 단기평균선이 위에서 아래로 장기평균선을 뚫을 때, 시세가 반전될 것을 의미하며, 평소한다.

또한, 이 전략은 FRAMA 지표를 보조 판단으로 도입한다. FRAMA 지표는 분기 시장 가설에 기반한 적응 이동 평균이다. 그것은 다른 주기 내의 가격 변동의 폭의 대수변화율을 계산하여 시장의 분기 차원을 실시간으로 추정하여 평균의 평평성을 동적으로 조정한다. FRAMA 지표 아래로 교착 시장을 통과하면, 추세 역전 신호를 표시하고, 평행선 교차 신호와 함께 판단의 정확성을 증가시킨다.

전략적 강점 분석

이 전략은 쌍평평선 교차와 FRAMA 지표를 결합하여 가짜 돌파 신호를 효과적으로 필터링하여 거래 신호의 품질을 향상시킵니다. 쌍평평선 교차는 주요 거래 방향을 판단하고, FRAMA 보조 판단은 흔들리는 상황에서 회전 시점을 놓치지 않도록합니다.

단일 지표와 모델에 비해 이 전략은 신호 품질을 크게 개선하고, 오판 가능성을 낮출 수 있다. 또한, 속속 평균선과 결합하여, 순차적으로 진행하여, 조준을 피할 수 있다.

위험 분석

이 전략의 주요 위험은 쌍평균선이 더 많은 가짜 브레이크 신호를 생성할 수 있다는 점이며, FRAMA 지표의 파라미터 설정도 판단 효과를 좌우한다. 또한, 특정 상황에서, 빠른 선과 느린 선, FRAMA와 종결 가격 사이에 오랫동안 교차하지 않을 수 있으며, 거래 기회가 없다.

위와 같은 위험을 제어하기 위해, 적당히 평선주기 변수를 조정하거나, 다른 지표와 결합하여 필터링 할 수 있습니다. 또한, FRAMA 지표의 길이, 분화 인자 등의 변수는 다른 시장에 대해 합리적인 설정을 필요로 하며, 지나치게 부드럽거나 과민하지 않습니다.

최적화 방향

이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.

  1. 더 많은 평행선 조합과 주기 변수를 테스트하여 최적의 변수 쌍을 찾습니다.

  2. 단편적 손실을 통제하기 위한 스톱 로즈 전략을 강화한다.

  3. 거래량 지표와 결합하여 낮은 거래량 가짜 돌파구를 피하십시오.

  4. 기계 학습 모델을 추가하고, 시장 상태를 실시간으로 평가하고, 동적으로 조정하는 매개 변수.

  5. 감정 지표, 뉴스 면 등과 같은 여러 요소를 결합하여 시장의 감정을 판단하여 의사 결정의 질을 향상시킵니다.

요약하다

이 전략은 초기 연습 쌍평평선 교차 전략과 FRAMA 지표의 조합 사용. 간단한 직관적인 기반을 유지하면서 신호 품질을 효과적으로 향상시키고, 추가 테스트 최적화를 할 가치가 있다. 매개 변수 조정, 새로운 지표 도입 등의 최적화와 함께 이 전략은 안정적이고 신뢰할 수 있는 정량 거래 전략이 될 수 있다.

전략 소스 코드
/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-16 00:00:00
period: 30m
basePeriod: 15m
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())