모멘텀 중재 전략 역 테스트 분석

저자:차오장, 날짜: 2023-10-25 11:10:59
태그:

img

I. 전략 이름

이 전략의 주요 특징을 바탕으로, 저는 이 전략을 모멘텀 중재 전략이라고 부릅니다.

전략 개요

이 전략은 데 모멘텀 오시일레이터를 계산하고 상부와 하부 임계치를 설정하여 수익을 위한 중재 기회를 생성하여 거래 신호를 생성합니다.

III. 전략 논리

코드는 먼저 매개 변수인 Length, TopBand 및 LowBand를 설정합니다. 여기서 Length는 모멘텀 계산에 필요한 날 수를 나타내고, TopBand와 LowBand는 상부와 하부 임계치를 나타냅니다.

그 다음 지난 길이 일 동안의 절대적인 운동량 xMom, 그리고 xMom의 간단한 이동 평균, xSMA_mom을 계산합니다.

그 후에, xMomLength, xMomLength의 길이일 동안의 누적 모멘텀을 계산합니다.

다음으로, 운동량 오시레이터 nRes를 계산합니다. 이 값은 xMomLength를 xSMA_mom로 나누고

nRes와 임계값을 비교한 결과, 길거나 짧은 방향을 결정하고 포스 (pos) 에 저장합니다.

마지막으로, 리버스 트레이딩이 활성화되었는지에 따라 POS를 조정하고, 트레이딩 신호 POSIG를 생성하고, 긴/단기 엔트리를 만듭니다.

IV. 전략의 강점

  1. 동력 지표를 사용하여 잠재적인 트렌드 전환점을 식별하여 트렌드 포착에 도움이 됩니다.

  2. 명확한 장/단 신호를 형성하고 임계 필터링을 사용하여 잘못된 거래를 피합니다.

  3. 반전 거래 논리를 적용하여 역전 기회를 얻습니다.

  4. 큰 조정 가능한 매개 변수 공간, 다른 제품과 시간 프레임에 최적화 될 수 있습니다.

  5. 시각화 된 매개 변수는 직관적이고 거래 논리를 이해하기 쉽습니다.

V. 전략적 위험

  1. 단지 추진력을 고려하면 다른 기술 지표에 의해 형성된 기회를 놓칠 수 있습니다.

  2. 모멘텀 브레이크는 반드시 트렌드 반전을 의미하지는 않습니다. 잘못된 판단의 위험이 있습니다.

  3. 반전 거래는 수익 잠재력을 가지고 있지만 손실을 증폭시킬 수도 있습니다.

  4. 부적절한 매개 변수 최적화로 인해 거래가 과다하거나 최고의 입구 지점을 놓칠 수 있습니다.

  5. 갑작스러운 사건으로 인한 단기적인 동력 왜곡을 필터링해야 합니다

신호 신뢰성을 확인하기 위해 트렌드와 변동성 같은 다른 지표를 결합하여 위험을 제어 할 수 있습니다. 거래 빈도를 낮추기 위해 매개 변수를 조정하고, 중지 손실을 적절히 완화합니다.

전략 최적화 방향

  1. 신호 정확성을 높이기 위해 다른 기술 지표 필터를 추가합니다.

닫기 가격이 이동 평균 시스템 이상인지, 또는 변동성이 정상 범위 내에 있는지 확인합니다.

  1. 제품 특성에 따라 매개 변수를 최적화합니다.

더 휘발성 상품의 경우, 상거래 빈도를 낮추기 위해 정상적인 임계 범위를 완화하십시오.

  1. 여러 시간 프레임 최적화

더 작은 기간 길이를 사용 하 여 내일 초단기 거래. 중장기 트렌드를 위해 주간 또는 월간 차트에 기반 한 매개 변수를 조정 합니다.

  1. 바닥의 분차 조건을 설정합니다.

구매 신호를 위해, 가짜 반전 신호를 피하기 위해 가격이 이전 하위보다 높아야 합니다.

결론

이 전략은 주로 동력 지표를 통해 단기 트렌드 역전을 식별하고, 거래 신호를 생성하기 위해 매개 변수 필터링, 트렌드 추종 균형을 맞추고 역전 포착을 수행합니다. 위험은 제어 할 수 있습니다. 멀티 타임프레임 최적화 및 다른 기술적 지표를 결합하여 추가 연구 및 응용은 전략 성능을 향상시킬 수 있습니다.


/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 07/02/2017
//    This indicator plots Chande Momentum Oscillator. This indicator was 
//    developed by Tushar Chande. A scientist, an inventor, and a respected 
//    trading system developer, Mr. Chande developed the CMO to capture what 
//    he calls "pure momentum". For more definitive information on the CMO and 
//    other indicators we recommend the book The New Technical Trader by Tushar 
//    Chande and Stanley Kroll.
//    The CMO is closely related to, yet unique from, other momentum oriented 
//    indicators such as Relative Strength Index, Stochastic, Rate-of-Change, 
//    etc. It is most closely related to Welles Wilder`s RSI, yet it differs 
//    in several ways:
//        - It uses data for both up days and down days in the numerator, thereby 
//          directly measuring momentum;
//        - The calculations are applied on unsmoothed data. Therefore, short-term 
//          extreme movements in price are not hidden. Once calculated, smoothing 
//          can be applied to the CMO, if desired;
//        - The scale is bounded between +100 and -100, thereby allowing you to 
//          clearly see changes in net momentum using the 0 level. The bounded scale 
//          also allows you to conveniently compare values across different securities.
////////////////////////////////////////////////////////////
strategy(title="CMO (Chande Momentum Oscillator)", shorttitle="CMO")
Length = input(9, minval=1)
TopBand = input(70, minval=1)
LowBand = input(-70, maxval=-1)
reverse = input(false, title="Trade reverse")
// hline(0, color=gray, linestyle=dashed)
// hline(TopBand, color=red, linestyle=line)
// hline(LowBand, color=green, linestyle=line)
xMom = abs(close - close[1])
xSMA_mom = sma(xMom, Length)
xMomLength = close - close[Length]
nRes = 100 * (xMomLength / (xSMA_mom * Length))
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="CMO")

더 많은