123 반전 이동 평균 컨버전스 디버전스 조합 전략

저자:차오장, 날짜: 2023-11-22 14:49:41
태그:

img

전반적인 설명

이 전략은 울프 젠센이 그의 책에서 제안 한 123 역전 거래 전략을 마틴 프링이 제안 한 이동 평균 컨버전스 디버전스 오시레이터 (KST) 와 결합하여 역전 패턴과 트렌드 오시레이션 지표를 사용하여 거래 신호를 생성하는 양적 전략을 구축합니다.

전략 원칙

123 반전 형성 메커니즘

이 전략의 핵심 논리는 지난 2일 동안 주식의 폐쇄 가격이 역전되었는지 여부를 모니터링하는 것입니다. 특히:

지난 2 일 동안의 종료 가격은 하락 추세에 있다면, 즉, 전날의 종료 가격은 전날보다 높고, 오늘의 종료 가격은 전날의 종료 가격보다 높은 전날의 종료 가격에서 상승률을 올리는 경우, 그것은 바닥 반전으로 판단 될 수 있으며 구매 신호가 생성됩니다.

반대로, 지난 2 일 동안의 종료 가격은 상승 추세에 있다면, 즉, 전날의 종료 가격은 전날보다 낮고, 오늘날의 종료 가격은 전날의 종료 가격보다 낮아지면, 그것은 최상위 반전으로 판단 될 수 있으며 판매 신호가 생성됩니다.

이 전략의 부분은 또한 역행이 아닌 거래 신호를 필터링하기 위해 너무 많이 구매되거나 너무 많이 팔렸는지 결정하기 위해 스토카스틱 지표를 결합합니다.

KST 지표 원칙

KST 지표에서 ROC는 가격 변화율을 나타내고, 각각 6일, 10일, 15일 및 20일 ROC를 계산하고, 다른 매개 변수 이동 평균 평형화 후 가중 합을 수행하여 KST 지표를 구성합니다.

빠른 선이 느린 선 위에 넘어가면 상승선으로 판단되며 빠른 선이 느린 선 아래에 넘어가면 하락선으로 판단됩니다. 여기서 빠른 선은 원래 KST 값이고 느린 선은 KST의 이동 평균입니다.

이 전략은 KST>0을 이용해서 상승세를 판단하고 KST<0을 이용해서 하락세를 판단합니다.

신호 합병

123 회전 전략의 판단 신호와 KST 지표가 결합됩니다.

  • 두 신호가 동일하다면, 그 방향으로 거래 신호가 생성됩니다.
  • 두 신호가 다르면 거래가 일어나지 않습니다.

이 전략은 두 가지 다른 유형의 기술적 지표를 포괄적으로 사용하고 있으며, 역전 패턴과 지표 판단을 사용하여 더 진보 된 양적 거래 전략을 설계하기 위해 신호 강점을 결합한다는 것을 알 수 있습니다.

전략 의 장점

  • 반전 부분은 전환점을 효과적으로 식별 할 수 있으며 표시 부분은 서로 보완하는 경향을 추적 할 수 있습니다.
  • 이중 표시기로 필터링하면 신호 품질을 향상시키고 잘못된 신호를 줄일 수 있습니다.
  • 다양한 주기의 조류에 대한 최적화를 위해 KST 매개 변수의 유연한 조정
  • 높은 변동성 주식에 적응할 수 있고, 비교적 안정적인 주식에도 사용할 수 있습니다.

전략 의 위험

  • 반전 실패의 위험, 반전 신호는 또한 잘못된 파업이 될 수 있습니다.
  • 신호 융합 후 어떤 기회는 놓칠 수 있습니다.
  • 잘못된 KST 매개 변수는 결과를 크게 방해 할 수 있습니다.
  • 주가 급격히 변동되면 KST가 뒤떨어지거나 불일치 신호가 나타날 수 있습니다.

매개 변수 조정, 반전 논리의 최적화, 스톱 로스 메커니즘 도입과 같은 방법은 위험을 제어하는 데 사용될 수 있습니다.

최적화 방향

  • 스토카스틱 매개 변수를 최적화
  • KST 라인의 길이 매개 변수를 최적화
  • 거래량 또는 변동성 지수 필터를 추가
  • 트렌드 판단을 추가하여 트렌드 상거래를 피합니다.
  • 스톱 로스 메커니즘을 도입

결론

이 전략은 여러 가지 유형의 기술적 지표를 통합합니다. 이중 확인 및 조합 최적화를 통해 과학적으로 비교적 강력한 양적 거래 전략을 설계하고 전략 조합의 모델입니다. 라이브 거래에서의 성능은 아직 검증되지 않았지만 이론적 개념화 관점에서 여러 시나리오를 포괄적으로 고려하고 단일 지표의 한계를 해결하며 추가 연구 및 응용 가치가 있습니다.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 23/03/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 really is the KST indicator presented by Martin Pring. 
// the KST indicator is a weighted summed rate of change oscillator that 
// is designed to identify meaningful turns. Various smoothed rate of change 
// indicators can be combined to form different measurements of cycles. 
//
// 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


MROC() =>
    pos = 0.0
    xROC6 = sma(roc(close, 6), 10)
    xROC10 = sma(roc(close, 10), 10)
    xROC15 = sma(roc(close, 15), 9)
    xROC20 = sma(roc(close, 20), 15)
    nRes = xROC6 + (2 * xROC10) + (3 * xROC15) + (4 * xROC20)
    pos := iff(nRes > 0, 1,
    	     iff(nRes < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & MovROC (KST indicator)", 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)
//-------------------------
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posMROC = MROC()
pos = iff(posReversal123 == 1 and posMROC == 1 , 1,
	   iff(posReversal123 == -1 and posMROC == -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 )

더 많은