이중 모멘텀 인덱스 및 반전 하이브리드 전략

저자:차오장날짜: 2024-02-06 12:22:32
태그:

img

전반적인 설명

이중 모멘텀 인덱스 및 리버설 하이브리드 전략은 리버설 및 모멘텀 전략을 결합한 복합 전략이다. 이 전략은 트레이딩 신호의 정확성을 향상시키는 것을 목표로 한다.

전략 논리

이 전략은 두 가지 하위 전략으로 구성됩니다.

  1. 123 반전 전략: 종점 가격이 2일 연속 상승하고 주가가 50보다 낮을 때 긴; 종점 가격이 2일 연속 하락하고 주가가 50보다 높을 때 짧은. 반전 유형의 전략입니다.

  2. 상품 선택 지수 (CSI) 전략. 평균 진 범위 (ATR) 와 평균 방향 움직임 지수 (ADX) 를 결합합니다. ATR은 시장 변동성을 반영하고 ADX는 트렌드 강도를 반영합니다. CSI 값이 높을수록 시장 트렌드와 변동성이 강합니다. 이은 추진력 추적 전략입니다.

전체 전략은 123 역전 전략을 주체로, CSI를 보조 확인으로 사용합니다. 두 전략의 신호가 일관성있을 때만 거래 신호가 생성됩니다. 종료 가격이 2 일 연속으로 상승하고 스톡이 50 이하인 동시에 CSI가 이동 평균을 넘을 때 길게 이동합니다. 종료 가격이 2 일 연속으로 떨어지고 스톡이 50 이상인 동시에 CSI가 이동 평균을 넘을 때 짧게 이동합니다.

이것은 거래 신호의 반전 속성을 보장하고, CSI를 필터에 추가하면 잘못된 신호를 줄일 수 있습니다.

장점

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 역전과 운동량을 결합하면 신호의 정확도가 향상됩니다. 123 역전으로 주요 신호는 갑작스러운 폭력적인 역전을 캡처 할 수 있습니다. 확인으로 CSI는 약간의 소음을 필터 할 수 있습니다.

  2. 복합 필터링을 채택하면 순위 포지션을 크게 줄일 수 있습니다. 하위 전략 자체에 일부 잘못된 신호가있는 경우에도 최종 신호는 두 번 확인되어야하며 대부분의 잘못된 신호를 필터링하고 불필요한 포지션 개장 및 폐쇄를 최소화 할 수 있습니다.

  3. 하위 전략의 매개 변수는 서로 간섭하지 않고 개별적으로 최적화 될 수 있습니다. 이것은 최적의 매개 변수 조합을 찾는 것을 용이하게합니다.

  4. 하위 전략은 별도로 활성화 될 수 있습니다. 전략은 거래에만 123 역전 또는 CSI를 사용 합니다. 이것은 유연성을 제공합니다.

위험 분석

이 전략은 복합 필터링을 통해 잘못된 신호를 크게 줄여주는 것이지만, 여전히 다음과 같은 주요 위험이 있습니다.

  1. 전략 신호 생성 빈도는 상대적으로 낮습니다. 이중 확인을 채택하면 거래 기회의 특정 비율이 필연적으로 필터링됩니다. 이것은 높은 승률을 달성하는 필연적인 비용입니다.

  2. 두 하위 전략의 매개 변수가 부적절하면 드물거나 전혀 신호가 발생하지 않을 수 있습니다. 최적의 매개 변수 조합을 찾기 위해 매개 변수의 엄격한 테스트와 최적화가 필요합니다.

  3. 123 역행은 역동 트렌드 작업에 속합니다. 연속적이고 폭력적인 일방적 가격 돌파가 발생할 경우 전략은 더 큰 위험에 직면 할 것입니다. 위험을 제어하기 위해 스톱 로스를 추가하는 것이 좋습니다.

최적화 방향

이 전략의 주요 최적화 가능성은 다음과 같은 영역입니다.

  1. 각 하위 전략의 본질적 매개 변수를 최적화하여 Stoch, CSI 등 매개 변수를 포함하여 최적의 매개 변수 조합을 찾습니다.

  2. 다른 시장 조건 필터에서 추가 테스트, 트렌드가 지배 할 때만 CSI를 사용하는 것과 같은, 범위 제한 시장에서만 123 역전을 사용하는 등. 이것은 부분 전략의 단점을 어느 정도 극복 할 수 있습니다.

  3. 매개 변수 자체 적응 및 동적 최적화 모듈을 개발하여 전략이 매개 변수를 자동으로 조정하고 최적의 매개 변수 조합을 실시간 시장 조건과 통계에 따라 추적 할 수 있습니다.

  4. 다른 스톱 로스 메커니즘을 테스트하십시오. 적절한 스톱 로스는 위험을 효과적으로 제어하고 불필요한 포지션 개척 및 폐쇄를 줄일 수 있습니다.

요약

이중 모멘텀 인덱스 및 반전 하이브리드 전략은 다중 신호 확인 및 조합의 아이디어를 활용하여 반전 및 모멘텀 전략의 장점을 잘 활용하고 상호 필터링을 통해 결함을 극복하여 높은 효율성과 안정성을 달성합니다. 채택을 고려해야하는 전형적인 수치 전략으로 사용됩니다.


/*backtest
start: 2024-01-06 00:00:00
end: 2024-02-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 25/10/2019
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// The Commodity Selection Index ("CSI") is a momentum indicator. It was 
// developed by Welles Wilder and is presented in his book New Concepts in 
// Technical Trading Systems. The name of the index reflects its primary purpose. 
// That is, to help select commodities suitable for short-term trading.
// A high CSI rating indicates that the commodity has strong trending and volatility 
// characteristics. The trending characteristics are brought out by the Directional 
// Movement factor in the calculation--the volatility characteristic by the Average 
// True Range factor.
// Wilder's approach is to trade commodities with high CSI values (relative to other 
// commodities). Because these commodities are highly volatile, they have the potential 
// to make the "most money in the shortest period of time." High CSI values imply 
// trending characteristics which make it easier to trade the security.
// The Commodity Selection Index is designed for short-term traders who can handle 
// the risks associated with highly volatile markets.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

fADX(Len) =>
    up = change(high)
    down = -change(low)
    trur = rma(tr, Len)
    plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, Len) / trur)
    minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, Len) / trur)
    sum = plus + minus 
    100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), Len)

CSI(Length, Commission, Margin, PointValue) =>
    pos = 0.0
    K = 100 * ((PointValue / sqrt(Margin) / (150 + Commission)))
    xATR = atr(Length)
    xADX = fADX(Length)
    nADXR = (xADX + xADX[Length]) * 0.5
    xCSI = K * xATR * nADXR
    xMACSI = sma(xCSI, Length)
    pos := iff(xCSI < xMACSI, 1,
    	     iff(xCSI > xMACSI, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Strategy 123 Reversal & Commodity Selection Index", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
PointValue = input(50)
Margin = input(3000)
Commission = input(10)
LengthCSI = input(14)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posCSI = CSI(LengthCSI, Commission, Margin, PointValue)
pos = iff(posReversal123 == 1 and posCSI == 1 , 1,
	   iff(posReversal123 == -1 and posCSI == -1, -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)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

더 많은