리소스 로딩... 로딩...

이중 균형 잡힌 황소와 곰 전략

저자:차오장, 날짜: 2023-10-30 10:31:17
태그:

img

전반적인 설명

이중 균형 잡힌 황소와 곰 전략은 123 역전 전략과 황소와 곰 균형 지표를 통합한 조합 전략이다. 더 신뢰할 수있는 시장 진출을 위해 123 역전 전략의 신호를 황소와 곰 균형 지표와 확인하는 것을 목표로합니다.

원칙

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

  1. 123 반전 전략. 마지막 두 개의 폐쇄 가격이 반전을 나타낼 때 신호를 생성합니다. 즉, 이전 두 개의 폐쇄 가격이 하락하는 동안 세 번째 폐쇄 가격이 상승하고 이전 두 개의 폐쇄 가격이 상승하고 세 번째 폐쇄 가격이 하락하는 동안 짧은 신호를 만듭니다. 또한 STOCH 지표를 통합하여 STOCH가 과판 또는 과반 구매 조건을 표시 할 때 신호를 취합니다.

  2. 황소와 곰 (Bulls and Bears) 균형 지표 전략. 상승세와 하락세 사이의 균형을 계산하여 시장 추세를 판단합니다. 구체적으로, 현재 폐쇄 가격과 개시 가격의 차이, 그리고 현재와 전날의 차이점을 사용하여 상승세와 하락세 세력을 결정합니다. 상승세와 하락세 사이의 차이는 클수록 추세가 더 두드러집니다.

결합 전략은 두 하위 전략에서 생성된 신호에서 거래 신호를 얻습니다. 두 하위 전략이 일관된 신호를 제공하면, 즉 두 하위 전략이 양쪽 모두 긴 신호를 제공하면 신호를 얻습니다. 두 하위 전략의 신호가 다르면 결합 전략은 그 신호를 건너뛰고 옆으로 남아 있습니다.

장점

이중 균형 황소 및 곰 전략의 가장 큰 장점은 높은 신뢰성입니다. 거래에 참여하기 전에 두 하위 전략에서 일관된 신호를 요구함으로써 잘못된 신호를 피하기 위한 검증 메커니즘으로 작용합니다. 또한 두 하위 전략이 각각 역전 및 트렌드 측면에서 기회를 활용함으로써 전략은 단일 전략의 위험을 완화하기 위해 다양성을 제공합니다.

123 역전 전략은 시장에서 단기적 역전 기회를 포착할 수 있다. 황소와 곰 균형 전략은 장기적인 트렌드의 방향을 결정할 수 있다. 둘을 사용함으로써 주요 트렌드에 충실하면서 역전 현상을 포착할 수 있으며, 약한 역전 신호를 필터링하고 승률을 높일 수 있다.

위험성

가장 큰 위험은 하위 전략에서 잘못된 신호의 확률이 두 배로 증가한다는 것입니다. 결합 전략은 일관된 신호를 필요로하지만, 두 하위 전략이 동시에 잘못된 신호를 내면 결합 전략은 여전히 거래에 들어가 두 배의 손실을 발생시킵니다.

또한, 하위 전략들 사이에 갈등이 발생할 수 있으며, 하나는 길게, 다른 하나는 짧게 갈 것을 신호한다. 결합된 전략은 기회를 놓칠 것이다. 장기간 지속되는 갈등은 결합된 전략이 장기적으로 진입하는 것을 막을 수 있으며, 자본 효율성을 감소시킬 수 있다.

최적화

트렌드 역전 전략을 세 번째 하위 전략으로 통합하는 것을 고려하십시오. 그것은 장기적인 트렌드를 결정하고 트렌드가 역전될 때 신호를 줄 수 있습니다. 시장 트렌드를 판단하는 전략을 추가하면 잘못된 신호를 추가로 필터링하고 안정성을 높일 수 있습니다.

또 다른 방향은 더 정렬 된 신호를 위해 하위 전략의 매개 변수를 조정하는 것입니다. 예를 들어, 약한 경향을 포착하고 역전 전략을 보완하기 위해 황소와 곰 균형 전략의 임계 매개 변수를 조정합니다.

또한 하위 전략 간의 장기적 갈등을 처리하는 것도 연구할 수 있다. 예를 들어, 갈등에 대한 최대 관용 수준을 설정하여 개별 하위 전략의 신호를 채취한다. 이것은 어느 정도 기회 손실을 완화시킬 수 있다.

결론

이중 균형 황소와 곰 전략은 거래 신호의 이중 검증을 달성하고 잘못된 신호를 효과적으로 필터링하고 안정성을 높이기 위해 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 )

더 많은