트렌드 역전 변동성 조합 전략

저자:차오장, 날짜: 2023-10-24 14:23:58
태그:

img

전반적인 설명

이 전략은 트렌드 역전 전략과 통계적 변동성 전략을 결합하여 더 강력한 거래 신호를 생성합니다.

어떻게 작동 합니까?

이 전략은 두 부분으로 구성됩니다.

  1. 트렌드 역전 전략

    • 123 패턴을 사용하여 트렌드 반전 지점을 식별합니다. 구체적으로 클로즈가 2 일 연속 상승하고 9 일 스토카스틱 슬로우 라인이 50 이하인 경우 긴 이동; 클로즈가 2 일 연속 하락하고 9 일 스토카스틱 패스트 라인이 50 이상인 경우 짧은 이동.
  2. 통계적 변동성 전략

    • 극한 값 방법을 사용하여 30 일 통계 변동성을 계산합니다. 변동성이 0.5% 이상이면 장거리; 변동성이 0.16% 이하라면 단거리

전략은 두 전략이 방향에 동의 할 때만 거래 신호를 생성합니다. 그렇지 않으면 거래가 없습니다.

이점 분석

콤보 전략은 두 가지 다른 유형의 전략을 결합하여 신호 신뢰성을 향상시킵니다.

  1. 123 패턴은 트렌드 반전 지점을 정확하게 포착하고 일회성 가격 상승으로 인해 오해를 피할 수 있습니다.

  2. 통계 변동성은 지난 달 시장 움직임에 기초하여 높은 변동성과 높은 기회 기간에 초점을 맞추고 있습니다.

서로 검증함으로써 두 전략이 결합하여 주요 시장 전환점을 더 정확하게 파악하고 더 정확한 거래 신호를 생성합니다.

위험 분석

  1. 123 패턴은 거짓 파업의 위험을 완전히 피할 수 없습니다. 불규칙한 윙사우는 나쁜 신호를 일으킬 수 있습니다.

  2. 통계적 변동성은 역사적 데이터만을 고려하고 미래의 변동성을 예측할 수 없습니다. 갑작스러운 변동성 확장 또는 수축은 나쁜 신호로 이어질 수 있습니다.

  3. 두 전략 모두 매개 변수 조정에 크게 의존합니다. 열악한 매개 변수 설정은 신호 품질을 크게 저하시킬 수 있습니다.

  4. 전체적으로 더 신뢰할 수 있지만 콤보 접근법은 개별 전략에서 강한 신호를 놓칠 수 있습니다.

개선 할 수 있는 분야

  1. 볼링거 밴드, KDJ 같은 더 많은 지표를 통합하여 투표 메커니즘을 형성합니다.

  2. 더 많은 역사적 데이터를 사용하여 트렌드 역전 가능성을 결정하기 위해 기계 학습 알고리즘을 추가합니다.

  3. 소음을 필터링하기 위해 신호 강도 문턱을 설정합니다.

  4. 다양한 제품과 시간 프레임에 대한 매개 변수를 최적화합니다.

  5. 종합 전략의 위험을 제어하기 위해 스톱 로스 메커니즘을 추가합니다.

결론

이 전략은 트렌드 역전 및 통계 변동성 전략을 결합하여 신호 품질을 향상시켜 시장 전환점에 대해 더 정확한 거래 신호를 제공합니다. 그러나 오해의 위험과 매개 변수 최적화 문제가 남아 있습니다. 더 많은 지표와 기계 학습과 같은 추가 개선은 더욱 견고하고 신뢰할 수있는 거래 신호로 이어질 수 있습니다.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 31/07/2021
// 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
// This indicator used to calculate the statistical volatility, sometime 
// called historical volatility, based on the Extreme Value Method.
// Please use this link to get more information about Volatility.
//
// 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


SV(Length,TopBand,LowBand) =>
    pos = 0.0
    xMaxC = highest(close, Length)
    xMaxH = highest(high, Length)
    xMinC = lowest(close, Length)
    xMinL = lowest(low, Length)
    SqrTime = sqrt(253 / Length)
    Vol = ((0.6 * log(xMaxC / xMinC) * SqrTime) + (0.6 * log(xMaxH / xMinL) * SqrTime)) * 0.5
    nRes = iff(Vol < 0,  0, iff(Vol > 2.99, 2.99, Vol))
    pos := iff(nRes > TopBand, 1,
    	     iff(nRes < LowBand, -1, nz(pos[1], 0)))
    pos

strategy(title="Combo Backtest 123 Reversal & Statistical Volatility", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Statistical Volatility ----")
LengthSV = input(30, minval=1)
TopBand = input(0.005, step=0.001)
LowBand = input(0.0016, step=0.001)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posSV = SV(LengthSV,TopBand,LowBand)
pos = iff(posReversal123 == 1 and posSV == 1 , 1,
	   iff(posReversal123 == -1 and posSV == -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 )

더 많은