이분법 모멘텀 브레이크업 역전 전략

저자:차오장, 날짜: 2024-02-28 17:20:02
태그:

img

전반적인 설명

이분법 모멘텀 브레이크아웃 역전 전략은 스토카스틱 지표와 불 파워 지표를 결합하여 시장 전환점에 이중 신호 필터링과 역전 거래를 구현하여 과판 및 과입 상황을 추적합니다.

전략 논리

이 전략은 두 부분으로 구성됩니다.

  1. 123 역전 전략

    프 젠슨 (Ulf Jensen) 이 그의 책에서 제안한 역전 전략을 사용합니다. How I Triple My Money in the Futures Market. 닫기 가격이 2 일 연속으로 이전 닫기보다 높고 9 일 느린 스토카스틱이 50 이하일 때 긴 거리로 이동합니다. 닫기 가격이 2 일 연속으로 이전 닫기보다 낮고 9 일 빠른 스토카스틱이 50 이상일 때 짧은 거리로 이동합니다.

  2. 황소 힘 지표

    그것은 Vadim Gimelfarb가 그의 책 Bull and Bear Balance Indicator에서 제안한 모멘텀 지표를 사용합니다. 현재 K-라인과 이전 K-라인 사이의 관계를 계산하여 상승 / 하락 힘을 판단하고 거래 신호를 생성합니다.

이 전략은 위의 두 개의 단일 신호 전략을 결합합니다. 이중 신호 필터링을 구현하기 위해 두 가지 전략의 신호가 일관 할 때만 거래 신호를 생성합니다.

이점 분석

이 전략은 반전 전략과 추적 전략의 장점을 결합합니다. 시장이 반전 징후를 표시 할 때 반전 신호를 적시에 캡처 할 수 있으며, 높은 점과 낮은 점을 쫓는 것을 피하기 위해 이중 신호 필터링을 통해 잘못된 신호를 줄일 수 있습니다. 주요 장점은 다음과 같습니다.

  1. 123 패턴을 사용하여 시장 전환점을 결정하고 과판과 과입 상황을 식별합니다.
  2. 이중 신호 필터링 메커니즘은 단일 지표에 의해 생성되는 잘못된 신호를 피하고 거래 신호의 품질을 향상시킵니다.
  3. 역전 거래 시장 역전으로 인한 트렌드 기회를 잡기 위해.
  4. 지표 매개 변수를 조정하여 다른 시장 환경에 적응 할 수있는 큰 매개 변수 최적화 공간.

위험 분석

이 전략은 또한 몇 가지 위험을 안고 있습니다.

  1. 반전 실패 위험. 반전 신호를 식별하는 것은 다소 어려움이 있습니다. 반전 신호를 제공 한 후 가격의 원래 트렌드가 계속되는 확률도 매우 높습니다.
  2. 두가지 지표가 서로 일치하지 않는 신호가 발생하면 기회 손실이 발생합니다.
  3. 부적절한 매개 변수 때문에 역전 신호의 정확하지 않은 식별
  4. 이 전략은 중장기 거래에 더 적합합니다. 단기 거래의 효과는 그다지 좋지 않습니다.

대책:

  1. 단일 손실을 통제하기 위해 스톱 로스 전략을 채택하십시오.
  2. 매개 변수를 최적화합니다. 다양한 품종에 대해 다른 조합을 선택할 수 있습니다.
  3. 다른 지표를 보조 판단으로 결합합니다.

최적화 방향

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

  1. 최적의 매개 변수 조합을 찾기 위해 전략 성능에 다른 매개 변수의 영향을 테스트하십시오. 예를 들어, 스토카스틱 지표의 사이클 매개 변수, KDJ 지표의 매개 변수 등을 조정하십시오.
  2. 단일 손실을 제어하기 위해 Stop Loss 전략을 증가시킵니다. ATR 지표와 결합하여 Stop Loss 포인트를 설정할 수 있습니다.
  3. 신호 검증을 위해 다른 지표를 결합하십시오. 예를 들어, MACD, KD, RSI 및 다른 지표는 거래 신호를 생성 할 때 고려 될 수 있습니다.
  4. 기계 학습 알고리즘을 사용하여 매개 변수를 최적화하고 매개 변수를 동적으로 조정합니다.

요약

이분법 모멘텀 브레이크아웃 역전 전략 (Binomial Momentum Breakout Reversal Strategy) 은 스토카스틱 지표와 불 파워 지표를 결합하여 이중 신호 필터링 및 역전 거래를 달성합니다. 시장 역전 기회를 포착하고 단일 신호로 인해 발생하는 소음을 피할 수 있습니다. 안정적이고 효과적인 수치 전략입니다. 전략은 매개 변수 최적화, 스톱 로스 전략, 신호 검증 등을 통해 개선 할 수 있으며 더 많은 품종과 시장 환경에 적합합니다. 최적화 및 응용에 큰 잠재력을 가지고 있습니다.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 05/07/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
//  Bull Power Indicator
//  To get more information please see "Bull And Bear Balance Indicator" 
//  by Vadim Gimelfarb. 
//
// 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

BullPower(SellLevel, BuyLevel) =>
    pos = 0
    value = iff (close < open ,  
             iff (close[1] < open ,  max(high - close[1], close - low), max(high - open, close - low)),
              iff (close > open, 
               iff(close[1] > open,  high - low, max(open - close[1], high - low)), 
                 iff(high - close > close - low, 
                  iff (close[1] < open, max(high - close[1], close - low), high - open), 
                   iff (high - close < close - low, 
                     iff(close[1] > open,  high - low, max(open - close, high - low)), 
                      iff (close[1] > open, max(high - open, close - low),
                       iff(close[1] < open, max(open - close, high - low), high - low))))))
    pos := iff(value > SellLevel, -1,
	         iff(value <= BuyLevel, 1, nz(pos[1], 0)))
    pos

strategy(title="Combo Backtest 123 Reversal & Bull Power", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
SellLevel = input(15, step=1)
BuyLevel = input(3, step=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posBullPower = BullPower(SellLevel, BuyLevel)
pos = iff(posReversal123 == 1 and posBullPower == 1 , 1,
	   iff(posReversal123 == -1 and posBullPower == -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 )

더 많은