더블 밸런스 불-베어 전략


생성 날짜: 2023-10-30 10:31:17 마지막으로 수정됨: 2023-10-30 10:32:53
복사: 1 클릭수: 642
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

더블 밸런스 불-베어 전략

개요

이중 균형 호우 베어 전략은 123 역전 전략과 다공간 균형 지표의 조합 전략이다. 이 전략은 123 역전 전략과 다공간 균형 지표의 신호를 사용하여 검증하여 더 신뢰할 수 있는 출시를 달성하기 위해 고안되었다.

원칙

이 전략은 다음의 두 가지 세부 전략으로 구성됩니다.

  1. 123 역전 전략. 이 전략은 후기 2개의 종결 가격에 역전이 있을 때 신호를 생성한다. 즉, 만약 전날 2개의 종결 가격이 떨어지고 3일의 종결 가격이 상승할 때 더 많이 하고, 전날 2개의 종결 가격이 상승하고 3일의 종결 가격이 떨어질 때 공백을 한다. 또한, 이 전략은 STOCH 지표와 결합되어, STOCH 지표가 과매 또는 과매를 표시할 때만 신호를 생성한다.

  2. 다공간 균형 지표 전략. 이 전략은 다공간 힘과 공중 힘의 균형 상태를 계산하여 시장 추세를 판단한다. 구체적으로, 당일 종결 가격과 개시 가격의 차이와 전날과 당일 사이의 차이를 계산하여 다공간 힘과 공중 힘을 판단한다. 다공간 힘의 차이는 더 커질수록 추세가 더 명확하다.

조합 전략의 거래 신호는 위의 두 가지 하위 전략의 거래 신호에서 유래한다. 조합 전략은 두 가지 하위 전략의 신호가 일치하는 경우에만, 예를 들어 모두 더 많은 것을 표시할 때, 조합 전략은 그 신호를 채택한다. 두 가지 하위 전략에서 나오는 신호가 일치하지 않으면, 조합 전략은 그 신호를 건너뛰고, 지켜보는 태도를 취한다.

장점

이중 균형 황소 곰 전략의 가장 큰 장점은 신뢰성이 높다는 것이다. 왜냐하면 그것은 두 개의 하위 전략이 일정한 신호를 발산하도록 요구하기 때문에 진입할 수 있으며, 가짜 신호를 피하기 위해 검증의 역할을 할 수 있다. 또한, 두 개의 하위 전략은 역전과 추세의 양쪽 측면에서 기회를 활용할 수 있으며, 전략 분산을 실현할 수 있으며, 단일 전략의 위험을 피한다.

123 역전 전략은 단기 시장의 역전 기회를 포착할 수 있다. 다공간 균형 전략은 장기 트렌드 방향을 판단할 수 있다. 이 둘을 함께 사용하면 역전과 동시에 주요 트렌드를 파악할 수 있으며, 약한 역전 신호를 필터링하여 수익률을 높일 수 있다.

위험

이 전략의 가장 큰 위험은 하위 전략이 잘못된 신호를 보내는 확률이 두 배로 증가한다는 것입니다. 조합 전략은 양쪽의 신호가 일치하도록 요구하지만, 두 가지 하위 전략이 동시에 잘못된 신호를 보낼 때, 조합 전략도 따라 들어서 두 배의 손실을 감수합니다.

또한, 하위 전략 사이에 불일치가 발생할 수 있는데, 하나는 다중 신호를 발송하고, 다른 하나는 공백을 낸다. 이 때 조합 전략은 기회를 놓치게 된다. 불일치가 지속된다면, 조합 전략은 오랫동안 출전할 수 없으며, 이로 인해 자금 효율성이 떨어질 수 있다.

최적화 방향

추세-역전 전략 (trend-reversal strategy) 을 제3의 하위 전략으로 도입하는 것을 고려할 수 있다. 이 전략은 장기적인 추세를 판단하고, 추세가 역전될 때 신호를 생성한다. 시장 추세를 판단하는 전략을 늘리는 것은 잘못된 신호를 제거하고, 안정성을 높이는 데 도움이 된다.

또 다른 최적화 방향은 하위 전략의 매개 변수를 조정하여 더 잘 어울리는 거래 신호를 생성할 수 있도록 하는 것입니다. 예를 들어, 다공간 균형 전략의 하위값 매개 변수를 조정하여 약한 추세를 잡을 수 있도록 하여 역전 전략과 상호 작용합니다.

또한, 서브 전략이 지속되는 불일치의 경우 처리 방법을 연구할 수 있다. 예를 들어, 불일치의 최대 허용 횟수를 설정하고, 개별 서브 전략의 신호 입구를 초과한 후. 이것은 어느 정도 기회의 손실을 완화시킬 수 있다.

요약하다

이중 균형 황소 곰 전략은 123 역전 전략과 다공간 균형 전략을 조합하여 거래 신호의 이중 검증을 구현하여 가짜 신호를 효과적으로 필터링하여 안정성을 높일 수 있습니다. 역전 전략과 트렌드 전략을 결합하면서 전략의 분산성을 구현하여 위험을 줄일 수 있습니다. 이 전략은 매칭도와 자금 효율성을 높이기 위해 세 번째 전략 등을 도입하여 파라미터 설정을 추가적으로 최적화 할 수 있습니다.

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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 03/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
//    This new indicator analyzes the balance between bullish and
//    bearish sentiment.
//    One can cay that it is an improved analogue of Elder Ray 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

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

    value2 = 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))))))
    nBBB = value2 - value
    pos := iff(nBBB < SellLevel, -1,
    	   iff(nBBB >= BuyLevel, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Bull And Bear Balance", 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=0.01)
BuyLevel = input(15, step=0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posBullAndBearBalance = BullAndBearBalance(SellLevel, BuyLevel)
pos = iff(posReversal123 == 1 and posBullAndBearBalance == 1 , 1,
	   iff(posReversal123 == -1 and posBullAndBearBalance == -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 )