듀얼 선형 반전 이동 평균 오실레이터 조합 전략


생성 날짜: 2023-11-22 14:49:41 마지막으로 수정됨: 2023-11-22 14:49:41
복사: 1 클릭수: 399
1
집중하다
1217
수행원

듀얼 선형 반전 이동 평균 오실레이터 조합 전략

개요

이 전략은 울프 슨의 저서인 123 형태 역전 거래 전략과 마틴 프린크의 중도 이동 평균 진동기 (KST) 를 결합하여, 역전 형태와 트렌드 흔들림 지표를 활용하여 거래 신호를 생성하는 종합적인 수치화 전략을 구축한다.

전략 원칙

123 역형성 기동

이 부분의 전략의 핵심 논리는 최근 2일 동안 주식 종결 가격의 전환을 관찰하는 것입니다.

만약 최근 2일간의 종결 가격이 하향 경향에 있다면, 즉 전날의 종결 가격이 전날의 2일간의 종결 가격보다 높고, 오늘의 종결 가격이 전날의 종결 가격보다 반전 상승, 즉 전날의 종결 가격보다 높다면, 밑바닥 반전을 판단하여 구매 신호를 생성할 수 있다.

반대로, 만약 최근 2일 종결 가격이 상승 추세에 있다면, 즉 전날 종결 가격이 전날 2일 종결 가격보다 낮았다면; 그리고 오늘 종결 가격이 전날 종결 가격보다 반전 하락, 즉 전날 종결 가격보다 낮았다면, 상위 반전을 판단하여 판매 신호를 생성할 수 있다.

이 부분 전략은 또한 Stochastic 지표가 과매매를 판단하고, 역전되지 않은 시점의 거래 신호를 필터링하는 것과 결합된다.

KST 지표 기동

KST 지표의 ROC는 가격의 변화 속도를 나타내고, 각각 6일, 10일, 15일, 20일 ROC를 계산하고, 다른 파라미터의 이동 평균을 평형화한 후, 가중합을 하여 KST 지표를 구성한다.

빠른 선에서 느린 선을 통과할 때 상점으로 판단하고, 빠른 선 아래에서 느린 선을 통과할 때 하락으로 판단한다. 여기, 빠른 선은 원시 KST 값이며, 느린 선은 KST의 이동 평균이다.

이 전략은 KST>0 판단을 부양으로, KST 판단을 하락으로 사용합니다.

신호 통합

123 형태 반전 전략과 KST 지표의 Judgment 신호를 결합:

  • 두 신호가 일치하면, 그 방향의 거래 신호를 생성합니다.
  • 두 신호가 일치하지 않으면 거래하지 마십시오.

보시다시피, 이 전략은 역형태와 지표를 적용하여 두 가지 다른 유형의 기술 지표를 판단하고, 그 신호 강도를 결합하여 더 고급 양적 거래 전략을 설계했습니다.

전략적 이점

  • 반전 형태 부분은 전환점을 효과적으로 식별할 수 있고, 지표 부분은 추세를 추적할 수 있으며, 둘은 상호 보완됩니다.
  • 이중 지수 필터링과 결합하여 신호 품질을 향상시키고 가짜 신호를 줄일 수 있습니다.
  • 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 )