이동 평균 변환-발산 지표 거래 전략


생성 날짜: 2023-09-19 21:16:26 마지막으로 수정됨: 2023-09-19 21:16:26
복사: 0 클릭수: 657
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요

이 전략은 평균선 전환-분산 지표 ((CMO) 를 기반으로 거래 판단을 한다. CMO 절대값은 가격 분산 정도를 나타내고, 전략은 CMO의 세 주기 절대값의 평균값을 기준으로 과매매를 판단하며, 전형적인 충격 지표 거래 전략에 속한다.

전략 원칙

이 전략은 주로 다음과 같은 논리를 적용합니다.

  1. CMO 지수의 3개의 다른 주기적 절대값을 계산합니다.
  2. 3주기 CMO 지수 절대값의 평균
  3. 평균값이 상한치보다 높을 때
  4. 평균값이 하위기준보다 낮으면 더 많이 보고 더 많이 하는 거죠.
  5. CMO 지수가 정상으로 돌아왔을 때, 평준화

CMO 지수는 가격 변화의 동력을 반영한다. 그것의 절대값 크기는 가격 분산도를 나타내고, 일정 범위를 초과하면 과매매 영역에 들어간다. 이 전략은 CMO의 이 특성을 활용하여, 과매매 상황을 판단하기 위해 여러 주기 평균을 사용하여 곡선을 평형화하고, 전형적인 충격 거래 전략에 속한다.

전략적 이점

  • CMO 지수에서 과매도 지역을 파악하는 방법
  • 3주기 평균값은 평평한 곡선을 만들어서 잘못된 신호를 피할 수 있다.
  • CMO 이론에 따르면, 과매매를 판단하는 근거가 강합니다.
  • 사용자 정의 변수 값, 시장 변화에 적응
  • 쉽게 실행할 수 있는 역전 전략

전략적 위험과 대응

  • CMO 지표는 잘못된 신호를 보낼 수 있습니다.
  • 변수 값은 계속 테스트하고 최적화해야 합니다.
  • 트렌드 상황에서 계속되는 과매매는 손실을 초래할 수 있습니다.

어떻게 대처해야 할까요?

  1. 트렌드 지표와 함께 트렌드 반향 거래를 피하십시오.
  2. 지표의 민감성을 높이기 위한 최적화 매개 변수
  3. 이동식 상쇄를 사용하여 단편적 손실을 제어합니다.

전략 최적화 방향

이 전략은 다음과 같은 차원에서 확장될 수 있습니다.

  1. 거래량 지표의 확인이 증가하여 트렌드 반전의 가짜 돌파구를 방지합니다.
  2. 이동성 손실 전략 통합, 최적화된 위험 관리
  3. 기계 학습과 같은 방법을 사용하여 자동으로 최적화합니다.
  4. 변동률 지표와 함께 포지션 규모 조정
  5. 다른 전략과 결합하여 위험을 분산하고 전체 수익률을 높여라

요약하다

이 전략은 CMO가 과매매를 판단하여 역전 거래를 하기 위해 사용되며, 다중 주기 평균을 채택하여 곡선을 효과적으로 평형화하여 잘못된 신호를 방지할 수 있다. CMO 지수 자체는 이론적 기반이 안정적이며, 가격 분산 상태를 안정적으로 결정한다. 매개 변수 최적화, 상쇄 전략 등으로 확장하면 보다 안정적인 진동 지수 거래 전략으로 최적화할 수 있다.

전략 소스 코드
/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-14 07:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////7////////////
//  Copyright by HPotter v1.0 21/02/2017
//    This indicator plots the absolute value of CMO averaged over three 
//    different lengths. This indicator plots a classical-looking oscillator, 
//    which is really an averaged value based on three different periods.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="CMOabsav", shorttitle="CMOabsav")
Length1 = input(5, minval=1)
Length2 = input(10, minval=1)
Length3 = input(20, minval=1)
TopBand = input(58, minval=1)
LowBand = input(5, minval=0)
reverse = input(false, title="Trade reverse")
hline(0, color=green, linestyle=hline.style_dashed)
hline(TopBand, color=purple, linestyle=hline.style_solid)
hline(LowBand, color=red, linestyle=hline.style_solid)
xMom = close - close[1]
xMomabs = abs(close - close[1])
nSum1 = sum(xMom, Length1)
nSumAbs1 = sum(xMomabs, Length1)
nSum2 = sum(xMom, Length2)
nSumAbs2 = sum(xMomabs, Length2)
nSum3 = sum(xMom, Length3)
nSumAbs3 = sum(xMomabs, Length3)
nRes = abs(100 * (nSum1 / nSumAbs1 + nSum2 / nSumAbs2 + nSum3 / nSumAbs3 ) / 3)
pos = iff(nRes > TopBand, 1,
	     iff(nRes < LowBand, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(nRes, color=blue, title="CMOabsav")