이중 이동 평균 황금 십자 양적 전략은 기술 지표 기반의 양적 거래 전략이다. 그것은 서로 다른 기간의 두 이동 평균을 계산하여 시장 트렌드를 결정하고 낮은 위험 거래를 가능하게 한다. 짧은 기간 이동 평균이 더 긴 기간 이동 평균을 넘을 때, 긴 이동 평균을 넘을 때 황금 십자 신호가 생성된다. 짧은 이동 평균이 더 긴 평균을 넘을 때, 짧은 이동 신호를 생성한다. 이 전략은 또한 잘못된 브레이크를 피하기 위해 가격 채널 지표를 통합한다.
이중 이동 평균 황금 십자 양적 전략은 이동 평균 이론을 기반으로 한다. 이동 평균은 시장 소음을 효과적으로 필터하고 장기 트렌드 방향을 나타낼 수 있다. 단기 이동 평균이 장기 이동 평균을 넘을 때 시장의 상향 반전을 나타내고 구매 신호이다. 짧은 이동 평균이 긴 이동 평균을 넘을 때 하향 반전을 나타내고 판매 신호이다. 이 전략은 이동 평균의 두 그룹을 설정한다. 첫 번째는 2일 이동 평균과 3일 이동 평균, 두 번째는 420일 이동 평균이다. 2일 구매 신호가 3일 이동 평균을 넘을 때 생성되고, 아래를 넘을 때 판매 신호가 생성된다. 420일 이동 평균은 단기 역전을 피하기 위해 장기 거래 추세를 결정하는 데 사용됩니다.
전략 코드의 핵심 논리는 다음과 같습니다.
구체적인 원칙은 다음과 같습니다.
단기 조정 후 트렌드 역전 기회를 잡는 것은 이중 이동 평균 교차와 전환점을 결정하고 잘못된 거래를 피하기 위해 매개 변수 필터를 설정하는 것입니다. 이 전략은 상대적으로 높은 이윤 인자로 단기 조정 후 트렌드 역전 기회를 효과적으로 포착 할 수 있습니다.
이중 이동평균 골든 크로스 양적 전략은 다음과 같은 장점을 가지고 있습니다.
이중 이동 평균 골든 크로스 양적 전략은 또한 다음과 같은 위험을 가지고 있습니다.
다음과 같은 방법을 사용하여 위험을 줄일 수 있습니다.
이중 이동 평균 황금 십자 양적 전략은 또한 다음과 같은 측면에서 최적화 될 수 있습니다:
매개 변수 최적화: 이동 평균 및 채널 지표 매개 변수를 조정하여 최적의 매개 변수 조합을 선택합니다. 유전 알고리즘은 최적화를 도울 수 있습니다.
시점 선택: 다른 제품 특성에 기초하여 가장 적합한 이동 평균 매개 변수를 선택하십시오. 예를 들어, 관심 관련 상품에 대한 짧은 기간 이동 평균을 설정하십시오.
스톱 로스 전략 최적화: 역동적인 정지, 후속 정지 등을 설정하여 후퇴 정지를 피합니다.
방향 트레이딩 최적화: 트렌드 지표를 포함하고 트렌드를 따르는 거래를 채택하여 역 트렌드 거래를 방지합니다.
기계 학습 조합: LSTM, RNN 및 다른 심층 학습 모델을 사용하여 신호 품질을 판단하고 입력 시기를 결정합니다.
이중 이동 평균 골든 크로스 양적 전략은 이동 평균 크로스오버의 간단한 원리를 통해 단기 가격 추세를 결정합니다. 채널 지표를 설정하면 잘못된 신호를 효과적으로 필터합니다. 전략은 직설적인 논리를 가지고 있으며 구현하기가 쉽습니다. 라이브 거래에서 검증된 비교적 좋은 성능으로 유연한 매개 변수 조정이 가능합니다. 매개 변수 최적화, 스톱 로스 최적화, 머신 러닝 등을 통해 업그레이드 할 수있는 권장 양적 전략입니다. 이 전략은 암호화폐 및 주식과 같은 제품 전반에 대한 알고리즘 거래에 적합합니다.
/*backtest start: 2023-12-24 00:00:00 end: 2023-12-25 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // Indicator420 by SeaSide420 strategy("Indicator420 strategy", overlay=true) q=input(title="HullMA",defval=420) z=input(title="HullMA cross",defval=3) a=input(title="VWMA",defval=14) rvwma=vwma(close,round(a)) rvwma2=vwma(close,round(a*2)) rvwma3=vwma(close,round(a*3)) n2ma=2*wma(close,round(z/2)) nma=wma(close,z) diff=n2ma-nma sqn=round(sqrt(z)) n2ma1=2*wma(close[1],round(z/2)) nma1=wma(close[1],z) diff1=n2ma1-nma1 sqn1=round(sqrt(z)) n2ma2=2*wma(close[2],round(q/2)) nma2=wma(close[2],q) diff2=n2ma2-nma2 sqn2=round(sqrt(q)) n1=wma(diff,sqn) n2=wma(diff1,sqn) n3=wma(diff2,sqn) b=n1>n2?red:lime c=n1>n2?green:red d=n3>rvwma3?red:green e=rvwma2>rvwma3?green:red f=n1>n2?red:green //plot(rvwma3, color=e, linewidth=1) plot(cross(rvwma, rvwma2) ? rvwma : na, style = line,color=e, linewidth = 1) plot(cross(n1, n2) ? n1 : na, style = line,color=b, linewidth = 3) plot(cross(n1, n2) ? n1 : na, style = circles,color=c, linewidth = 4) closelong = n1<n2 if (closelong) strategy.close("Long") closeshort = n1>n2 if (closeshort) strategy.close("Short") longCondition = n1>n2 and strategy.opentrades<1 and n1<rvwma3 if (longCondition) strategy.entry("Long",strategy.long) shortCondition = n1<n2 and strategy.opentrades<1 and n1>rvwma3 if (shortCondition) strategy.entry("Short",strategy.short)