이중 반전 중재 전략

저자:차오장, 날짜: 2024-02-06 09:58:04
태그:

img

전반적인 설명

이중 반전 중재 전략은 이중 반전 지표를 통합하는 중재 알고리즘이다. 123 반전 시스템과 가너 스윙 오시레이터 하위 전략을 결합하여 두 하위 전략이 동시에 중재 작업을 수행하기 위해 신호를 발산 할 때 거래 신호를 생성합니다.

전략 논리

이 전략은 두 가지 하위 전략으로 구성됩니다.

  1. 123 역전 시스템: 울프 젠슨의 책 How I Tripled My Money in The Futures Market에서 나온다. 183 페이지. 거래 규칙은 다음과 같습니다. 종료 가격이 이전 종료 가격보다 높고 2 일 전 종료 가격보다 낮을 때 느린 K 라인이 50 이하일 때 장거리; 종료 가격이 이전 종료 가격보다 낮고 2 일 전 종료 가격보다 높을 때 빠른 K 라인이 50 이상일 때 단거리.

  2. 간 스윙 오시레이터 (Gann Swing Oscillator): 로버트 크라우시 (Robert Krausz) 의 책?? A W.D. Gann Treasure Discovered?? 을 원작으로 한 것으로, 특정 기간 동안 가장 높고 가장 낮은 가격의 상승과 하락을 계산하여 시장 변동 방향을 판단합니다.

이 중재 전략의 거래 논리는 다음과 같습니다. 두 하위 전략의 신호 방향이 일관되면 실제 거래 신호가 생성됩니다. 긴 신호는 두 하위 전략이 동시에 긴 신호를 발사 할 때; 짧은 신호는 두 하위 전략이 동시에 짧은 신호를 발사 할 때입니다.

이점 분석

이 전략의 가장 큰 장점은 두 하위 전략의 신호를 통합함으로써 잘못된 신호를 효과적으로 필터링하고 거래 신호의 정확도를 향상시킬 수 있다는 것입니다. 두 하위 전략 각각은 각자의 강점을 가지고 있습니다. 123 역전 시스템은 갑작스러운 역전 추세를 파악할 수 있으며, Gann 스윙 오시레이터는 트렌드 역전의 성숙도를 결정할 수 있습니다. 둘을 결합하면 거래 신호가 더 신뢰할 수 있으며 이로 인해 전략의 안정성을 향상시킬 수 있습니다.

위험 분석

이 전략의 주요 위험은 두 하위 전략에서 불일치한 거래 신호 방향의 확률이 상대적으로 크기 때문에 거래 신호가 충분하지 않을 수 있다는 것입니다. 또한 하위 전략 자체는 또한 잘못된 신호의 특정 위험을 가지고 있습니다. 이 두 가지 요인의 조합은 전략에 대한 거래 수가 충분하지 않아 시장 기회를 완전히 포착 할 수 없습니다.

위험을 완화하기 위해 하위 전략의 매개 변수를 조정하여 거래 빈도를 적당히 증가시킬 수 있거나 잘못된 신호를 필터링하는 데 도움이되는 다른 지표를 결합 할 수 있습니다. 두 하위 전략 사이의 신호에서 큰 오차가있는 경우 더 신뢰할 수있는 하나를 따르는 것도 고려 할 수 있습니다.

최적화 방향

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

  1. 거래 빈도를 최적화하기 위해 하위 전략의 매개 변수를 조정합니다.
  2. 신호 품질을 향상시키기 위해 다른 기술적 지표에 대한 판단을 추가합니다.
  3. 각기 다른 제품과 기간을 기준으로 하위 전략의 무게를 최적화합니다.
  4. 단일 트랜잭션 손실을 제어하기 위해 스톱 로스 메커니즘을 추가합니다.

요약

이중 역전 중재 전략은 두 가지 다른 유형의 역전 전략을 통합하여 비교적 강력한 거래 신호를 형성합니다. 그것은 효과적으로 소음을 필터링하고 시그널 품질을 향상시킬 수 있으며 시장에서 역전 기회를 포착하기에 적합합니다. 그러나 하위 전략의 불일치 신호의 확률은 상대적으로 크며 거래 빈도가 충분하지 않을 수 있습니다. 또한 조합 전략 자체의 매개 변수 설정은 상당히 복잡하므로 최상의 결과를 달성하기 위해 충분한 테스트와 최적화를 필요로합니다.


/*backtest
start: 2024-01-06 00:00:00
end: 2024-02-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 04/11/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 Gann Swing Oscillator has been adapted from Robert Krausz's book, 
// "A W.D. Gann Treasure Discovered". The Gann Swing Oscillator helps 
// define market swings. 
//
// 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

    
GannSO(Length) =>
    pos = 0.0
    xGSO = 0.0
    xHH = highest(Length)
    xLL = lowest(Length)
    xGSO:= iff(xHH[2] > xHH[1] and xHH[0] > xHH[1], 1,
             iff(xLL[2] < xLL[1] and xLL[0] < xLL[1], -1, nz(xGSO[1],0)))
    pos := iff(xGSO > 0, 1,
    	     iff(xGSO < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Gann Swing 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)
//-------------------------
LengthGSO = input(5, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posGannSO = GannSO(LengthGSO)
pos = iff(posReversal123 == 1 and posGannSO == 1 , 1,
	   iff(posReversal123 == -1 and posGannSO == -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 )

더 많은