양적 반전 지수 전략 두 가지 트렌드 신호를 통합

저자:차오장, 날짜: 2023-12-26 15:47:36
태그:

img

전반적인 설명

이 전략은 중 트렌드 신호를 통합하는 양적 반전 지수 전략 (Quantitative Reversal Index Strategy Integrating Dual Trend Signals) 이라고 불린다. 이 전략은 두 가지 다른 전략의 신호 - 스토카스틱 지표에 기반한 단기 반전 신호와 볼륨에 기반한 장기 트렌드 신호를 통합하여 안정적인 진입 신호로 통합한다.

원칙

이 전략은 두 부분으로 구성되어 있다. 첫 번째 부분은 9일 주식에서 단기적 반전 신호를 생성한다. 구체적으로, 종결이 이전 종결보다 높고 Stoch 9일 빠른 선이 50보다 낮을 때, 느린 선이 50보다 낮을 때 긴 거리로 간다; 종결이 이전 종결보다 낮고 Stoch 9일 빠른 선이 50보다 높고 느린 선이 50보다 낮을 때 짧은 거리로 간다. 이 방법으로 Stoch의 황금 십자가와 죽음의 십자가는 단기적 반전 신호를 형성한다.

두 번째 부분은 부정적인 볼륨 지수 (NVI) 를 사용하여 장기 트렌드 신호를 형성합니다. NVI 계산 공식은 하루의 볼륨이 전날보다 작으면 하루의 폐쇄 가격의 변화율이 축적됩니다. 하루의 볼륨이 전날보다 크거나 같으면 전날의 값이 변하지 않습니다. 장기 트렌드 신호는 NVI 지수의 이동 평균을 통해 형성됩니다.

마지막으로, 전략은 두 가지 유형의 신호를 결합합니다. 단기 반전 신호와 장기 트렌드 신호가 같은 방향으로 있을 때만 입구 신호가 형성됩니다. 이것은 잘못된 신호를 필터링하고 안정성을 향상시키는 데 도움이됩니다.

이점 분석

이 전략의 가장 큰 장점은 신호의 안정성이다. 단기 반전 신호는 단기 시장 조정을 포착하고, 장기 트렌드 신호는 큰 트렌드가 변하지 않도록 보장합니다. 둘의 조합은 신호의 안정성을 크게 향상시키고 단기 신호에서 더 높은 비율을 갖는 잘못된 신호를 효과적으로 필터링 할 수 있습니다.

또한 전략은 몇 가지 매개 변수를 가지고 있으며 최적화하기가 쉽습니다. 사용자는 다른 시장의 특성에 적응하기 위해 NVI의 매개 변수를 조정해야합니다.

위험 분석

이 전략의 가장 큰 위험은 두 가지 유형의 신호 사이에 시간이 지연될 수 있다는 것입니다. 단기 반전 신호와 장기 트렌드 신호 사이에 약간의 지연이있을 수 있습니다. 이는 일정 기간 동안 일관성 없는 신호로 이어지며 안정적인 진입 신호를 형성할 수 없습니다.

또한 NVI 지표는 거래량에서 비정상적인 급증에 민감하며, 이는 장기적인 추세에 대한 잘못된 판단으로 이어질 수 있습니다.

이러한 위험을 완화하기 위해, NVI 지표의 매개 변수를 적절히 조정하거나 거래당 손실을 제어하기 위해 스톱 로스를 추가할 수 있습니다.

최적화

이 전략을 최적화하는 주요 측면은 다음과 같습니다.

  1. 역전 포착 능력을 향상시키기 위해 스톡 지표의 매개 변수를 최적화합니다.

  2. 장기적인 트렌드 식별 능력을 향상시키기 위해 NVI 지표의 사이클 길이를 최적화합니다.

  3. 거래량 필터를 추가하여 비정상적인 거래량에서 잘못된 신호를 제거합니다.

  4. 트레이드 당 손실을 제어하기 위해 스톱 로스 전략을 추가합니다.

결론

전략은 단기적 역전과 장기적 트렌드 아이디어를 기반으로 한 안정적인 입력 메커니즘으로 설계되어 잘못된 긍정적 비율을 효과적으로 제어하고 신호 안정성을 향상시킵니다. 최적화의 다음 단계에는 매개 변수를 조정하고 필터 조건을 추가하여 전략의 안정성을 더욱 향상시키는 것이 포함됩니다.


/*backtest
start: 2023-12-18 00:00:00
end: 2023-12-21 05:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 29/03/2021
// 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 theory behind the indexes is as follows: On days of increasing 
// volume, you can expect prices to increase, and on days of decreasing 
// volume, you can expect prices to decrease. This goes with the idea of 
// the market being in-gear and out-of-gear. Both PVI and NVI work in similar 
// fashions: Both are a running cumulative of values, which means you either 
// keep adding or subtracting price rate of change each day to the previous day`s 
// sum. In the case of PVI, if today`s volume is less than yesterday`s, don`t add 
// anything; if today`s volume is greater, then add today`s price rate of change. 
// For NVI, add today`s price rate of change only if today`s volume is less than 
// yesterday`s.
//
// 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


NVI(EMA_Len) =>
    pos = 0.0
    nRes = 0.0
    xROC = roc(close, EMA_Len)
    nRes := iff(volume < volume[1], nz(nRes[1], 0) + xROC, nz(nRes[1], 0))
    nResEMA = ema(nRes, EMA_Len)
    pos := iff(nRes > nResEMA, 1,
    	     iff(nRes < nResEMA, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Negative Volume Index", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Negative Volume Index ----")
EMA_Len = input(50, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posNVI = NVI(EMA_Len)
pos = iff(posReversal123 == 1 and posNVI == 1 , 1,
	   iff(posReversal123 == -1 and posNVI == -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 )

더 많은