더블 리버설 밸런스 전략


생성 날짜: 2023-12-15 16:56:20 마지막으로 수정됨: 2023-12-15 16:56:20
복사: 1 클릭수: 673
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

더블 리버설 밸런스 전략

개요

이중 반전 균형 전략은 반전 전략과 밀파 분해 전략을 통합적으로 사용하는 조합 전략이다. 이 전략은 먼저 123 반전 시스템을 사용하여 거래 신호를 생성하고, 그 다음 경험 모드 분해 (EMD) 와 결합하여 밀파 처리를 수행하여 두 거래 신호를 통합하여 더 높은 승률을 달성한다.

전략 원칙

123 회전 시스템

123 반전 시스템은 Ul f Jensen의 ?? 나는 어떻게 선물 시장에서 3 배의 수익을 얻는가 ?? 책에서 유래했다. 이 부분의 전략은 반전 유형 전략에 속한다. 종결 가격이 전날의 종결 가격보다 2 일 연속 높고, 9 일 느린 K 선이 50 이하일 때 더 많은 돈을 벌고, 종결 가격이 전날의 종결 가격보다 2 일 연속 낮고, 9 일 빠른 K 선이 50 이상일 때 공백한다.

경험 모드 분해 (EMD)

경험 모형 해산 (EMD) 은 자기 적응 데이터 분석 방법이다. 이는 데이터의 다른 주파수 성분을 효과적으로 분리하여 데이터의 장기 추세를 추출한다. 여기서 우리는 길이를 20로 설정하고, 델타는 0.5이고, 분수는 0.1이며, 가격의 다른 주파수 성분에 따라 거래 신호를 생성한다.

신호 통합

이중 반전 균형 전략은 123 반전 시스템과 경험 모드 분해로 생성된 거래 신호를 합성하여, 두 신호가 일치할 때 entrada를 확인한다. 이렇게 하면 전략의 승률을 높일 수 있다.

우위 분석

이중 역전 균형 전략은 역전 전략과 디지털 신호 처리 기술을 결합하여 서로 다른 모델의 장점을 종합적으로 활용한다. 역전 시스템은 단기 역전 기회를 포착하고, 경험 모드 분해는 장기 트렌드를 포착하며, 둘의 조합은 전략의 안정성을 향상시킬 수 있다.

이 전략은 또한 123 형태를 도입하여, 비 이상적인 반전이 중개되는 것을 방지할 수 있다. 경험 모드 분해에서 합리적인 파라미터를 설정하여, 부분적인 소음을 필터링하고, 잘못된 신호를 줄이는 데 도움이 된다.

위험 분석

이중 역전 균형 전략의 가장 큰 위험은 역전 실패에 있다. 123 형태를 도입하는 것이 이 확률을 줄일 수 있음에도 불구하고, 역전 거래는 본질적으로 큰 불확실성을 지니고 있음을 명심하라. 또한, 경험 패턴 해석은 자기 적응적 스피커 방법으로서, 극단적인 상황에서도 실패할 수 있다.

이러한 위험을 제어하기 위해, 우리는 반전 변수를 적절하게 조정하여 반전 신호를 더 신뢰할 수 있도록 할 수 있습니다. 또한 다른 파동 방법을 실험하여 더 나은 파동 효과를 얻을 수 있는지 확인 할 수 있습니다. 또한 소량의 거래를 유지하여 단일 손실을 피하는 것이 필요합니다.

최적화 방향

이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.

  1. 다양한 변수들의 역전시스템을 테스트하여 최적의 변수 조합을 결정한다

  2. 작은 파동 변환, 힐베르트 변환 등과 같은 다른 디지털 필터 방법을 시도해 보세요.

  3. 단편적 손실을 통제하기 위한 추가적인 손실 방지 전략

  4. 다른 지표와 결합하여 거래 방향이 더 정확하고 신뢰할 수 있도록 합니다.

  5. 투자자금 관리를 최적화하여 최적의 거래 규모 비율을 결정합니다

요약하다

이중 반전 균형 전략은 반전 전략과 디지털 신호 처리 기술을 통합적으로 사용하는 장점이다. 합리적인 매개 변수 설정, 위험 제어, 안정적인 거래이다. 이 전략은 매우 강력한 보편성과 확장성을 가지고 있으며, 추천할 만한 거래 전략이다.

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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 30/06/2020
// 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 related article is copyrighted material from Stocks & Commodities Mar 2010
//
// 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

Empirical(Length,Delta,Fraction) =>
    pos = 0
    xBandpassFilter = 0.0
    xPeak = 0.0
    xValley =0.0
    xPrice = hl2
    beta = cos(3.1415 * (360 / Length) / 180)
    gamma = 1 / cos(3.1415 * (720 * Delta / Length) / 180)
    alpha = gamma - sqrt(gamma * gamma - 1)
    xBandpassFilter := 0.5 * (1 - alpha) * (xPrice - xPrice[2]) + beta * (1 + alpha) * nz(xBandpassFilter[1]) - alpha * nz(xBandpassFilter[2])
    xMean = sma(xBandpassFilter, 2 * Length)
    xPeak :=  iff (xBandpassFilter[1] > xBandpassFilter and xBandpassFilter[1] > xBandpassFilter[2], xBandpassFilter[1], nz(xPeak[1])) 
    xValley :=  iff (xBandpassFilter[1] < xBandpassFilter and xBandpassFilter[1] < xBandpassFilter[2], xBandpassFilter[1], nz(xValley[1])) 
    xAvrPeak = sma(xPeak, 50)
    xAvrValley = sma(xValley, 50)
    nAvrPeak = Fraction * xAvrPeak
    nAvrValley = Fraction * xAvrValley
    pos := iff(xMean > nAvrPeak and xMean > nAvrValley, 1,
    	   iff(xMean < nAvrPeak and xMean < nAvrValley, -1, nz(pos[1], 0)))
    pos

strategy(title="Combo Backtest 123 Reversal & Empirical Mode Decomposition", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthEMD = input(20, minval=1)
Delta = input(0.5)
Fraction = input(0.1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posEmpirical = Empirical(LengthEMD,Delta,Fraction)
pos = iff(posReversal123 == 1 and posEmpirical == 1 , 1,
	   iff(posReversal123 == -1 and posEmpirical == -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 )