풀백 이후 사이클 반전 추세 추종 전략


생성 날짜: 2023-11-15 17:13:18 마지막으로 수정됨: 2023-11-15 17:13:18
복사: 0 클릭수: 605
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

풀백 이후 사이클 반전 추세 추종 전략

개요

이 전략은 두 가지 지표: 이동 평균선 반전 및 가격 변동 지표를 통합하여 거래 신호를 형성하여 주기 반전이 발생 한 후 반발하는 경향 거래 전략을 구현합니다.

원칙

이 전략은 주로 다음 두 가지 기술 지표를 사용하여 거래 신호를 판단합니다.

  1. 이동평균선 역전

이 부분은 지난 2 일 동안의 종결 가격의 하락을 계산하여, 빠른 K 값의 크기를 조합하여, 반전 신호가 발생하는지 판단 할 수 있습니다. 가격이 지난 2 일 동안 계속 상승하고 빠른 K 값이 느린 K 값보다 낮으면 구매 신호가 발생; 가격이 지난 2 일 동안 계속 하락하고 빠른 K 값이 느린 K 값보다 높으면 판매 신호가 발생한다.

  1. 가격이 지표에서 벗어났을 때

Detrend Price Oscillator 지표는 수평 이동 평균을 그리고, 가격과 그 선의 관계에 따라 가격 주기를 식별한다. 그것은 계산 주기보다 긴 추세를 필터링하여, 이동 평균이 숨겨진 짧은 주기적 변동을 식별한다. 가격이 평균보다 높을 때 구매 신호를 주고, 평균보다 낮을 때 판매 신호를 준다.

이 전략은 두 가지 지표의 신호를 합성하여 이동 평균선 반전 신호가 발생하면서 가격 탈락 지표가 확인된 반전 신호를 주면 거래 지시를 생성합니다. 따라서 일부 비효율적인 반전 신호를 필터링하여 반전 후 반발의 트렌드 기회를 잡을 수 있습니다.

장점

이 전략의 가장 큰 장점은 두 가지 지표의 장점을 합리적으로 활용하여 상호 보완하여 유효하지 않은 신호를 효과적으로 필터링하여 신호의 신뢰성을 강화할 수 있다는 것입니다.

이동 평균선 반전 지표는 그 자체로 잘못된 신호를 생성하기 쉽고, 그것만으로 판단하기 쉽고, 상승과 하락을 추적하기 쉽다. 가격과 분리된 지표의 조합을 도입하면, 바람직하지 않은 흔들림 영역에서 반전 작업을 피할 수 있다.

가격 탈락 지표의 파라미터 설정은 또한 더 짧은 기간의 변동만을 식별하도록 결정하여 이동 평균선 반전의 판단과 매우 일치하여 합리적인 반전의 시기를 식별 할 수 있습니다.

위험

이 전략에는 다음과 같은 위험들이 있습니다.

  1. 탄력성이 떨어지고, 교도소 형성이 쉽다.

이동평균선 반전은 평정 흔들림 영역에서 쉽게 발생할 수 있다. 반동력이 부족하면 다시 회전하여 상쇄선과 접촉하여 수익을 얻을 수 없다.

  1. 잘못된 변수 설정

가격 이탈 지표의 파라미터를 너무 크게 설정하면 중장선 주기적 추세를 식별할 수 있고, 너무 작으면 잘못된 판단의 위험을 증가시킬 수 있다. 다양한 품종에 대한 신중한 테스트가 필요하다.

  1. 이 사건으로 인해 전진이 실패했습니다.

주요 급격한 뉴스 사건의 개입은 기존의 추세 판단을 방해하여 역전 신호를 무효화시킬 수 있습니다. 이것은 기본 뉴스에 주의를 기울이고 뉴스 사건이 발생했을 때 맹목적으로 거래하는 것을 피해야합니다.

최적화 방향

이 전략은 다음과 같은 점들을 통해 더욱 최적화될 수 있습니다.

  1. 손해 방지 장치

이동 상쇄 또는 시간 상쇄를 합리적으로 설정하여 단일 손실을 제어 할 수 있습니다.

  1. 거래량 지표와 함께

거래량을 증가시키는 확인, 예를 들어 평균 거래량을 돌파할 때만 신호를 발산하면, 양능력이 충분하지 않은 무효 돌파구를 피할 수 있다.

  1. 동적 변수 최적화

시장 단계에 따라 파라미터를 동적으로 최적화하고, 트렌드가 뚜렷할 때 파라미터를 적절히 완화하고, 흔들릴 때 파라미터를 강화한다.

  1. 기계학습을 통한 동적 최적화

무작위 숲과 같은 기계 학습 방법을 사용하여 파라미터 조합을 평가하고 선택하여 동적 인텔리전스 최적화를 구현합니다.

요약하다

이 전략은 두 가지 지표의 장점을 잘 결합하여 역점에서 반발 경향을 포착한다. 비록 여전히 수축, 변수 최적화 등의 문제가 있지만, 전체적인 아이디어는 명확하고 논리적으로 합리적이며, 안정적인 수익을 달성하기 위해 추가 테스트 및 최적화를 할 가치가 있다.

전략 소스 코드
/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 30/12/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 Detrend Price Osc indicator is similar to a moving average, 
// in that it filters out trends in prices to more easily identify 
// cycles. The indicator is an attempt to define cycles in a trend 
// by drawing a moving average as a horizontal straight line and 
// placing prices along the line according to their relation to a 
// moving average. It provides a means of identifying underlying 
// cycles not apparent when the moving average is viewed within a 
// price chart. Cycles of a longer duration than the Length (number 
// of bars used to calculate the Detrend Price Osc) are effectively 
// filtered or removed by the oscillator.
//
// 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

DPO(Length) =>
    pos = 0.0
    xPrice = close
    xsma = sma(xPrice, Length)
    nRes = xPrice - xsma
    pos := iff(nRes > 0, 1,
    	     iff(nRes < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Detrended Price Oscillator", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthDPO = input(14, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posDPO = DPO(LengthDPO)
pos = iff(posReversal123 == 1 and posDPO == 1 , 1,
	   iff(posReversal123 == -1 and posDPO == -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 )