이중 요인 역전 및 가격 부피 추세 개선의 복합 전략

저자:차오장, 날짜: 2024-01-25 14:46:36
태그:

img

전반적인 설명

이 전략은 종합적인 거래 신호를 생성하기 위해 이중 요인 역전 및 개선된 가격 부피 트렌드 하위 전략을 결합합니다. 이중 요인 역전 전략은 그의 책의 183 페이지에서 울프 젠슨의 아이디어를 기반으로하며, 주식 가격이 이틀 동안 역전되고 스토카스틱 지표 조건이 충족되면 신호를 생성합니다. 개선된 가격 부피 트렌드 전략은 시장의 방향과 동력을 판단하기 위해 가격과 거래 부피의 공동 연구를 따르고 있습니다. 두 전략은 서로를 검증 할 수 있으며 결합 사용은 안정성을 향상시킬 수 있습니다.

전략 원칙

이중 요인 반전 하위 전략은 2 일 가격 반전 원칙과 스토카스틱 지표의 복수 판단을 사용합니다. 이전 종료 가격이 높지만 현재 종료 가격이 하향으로 반전되고 빠른 스토카스틱이 느린 스토카스틱보다 낮고 빠른 스토카스틱이 50 이상인 경우 짧은 신호가 생성됩니다. 이전 종료 가격이 낮지만 현재 종료 가격이 상향으로 반전되고 빠른 스토카스틱이 느린 스토카스틱보다 높고 빠른 스토카스틱이 50 이하인 경우 긴 신호가 생성됩니다.

개선된 가격량 트렌드 전략은 가격과 거래량 공동 연구를 기반으로 합니다. 계산 공식은: PxVFactor = PriceFactor + Scale * CumPVT, 여기서 PriceFactor는 가격 요소이며, CumPVT는 축적 된 힘 지표입니다. 그 다음 PxVFactor의 길이-일 간단한 이동 평균을 계산하고 현재 PxVFactor 값과 비교하여 시장 추세와 동력을 결정합니다.

콤보 전략은 두 가지 하위 전략의 신호를 포괄적으로 고려합니다. 이중 요인 역전과 개선 된 가격 부피 추세가 상승하거나 하락할 때 대응하는 긴 신호와 짧은 신호가 생성됩니다.

이점 분석

  • 이중 요인 역전 전략은 가격 역전과 스토카스틱 지표 판단을 결합하여 단기적 극단성을 효과적으로 파악하고 역전 기회를 포착할 수 있습니다.
  • 개선된 가격량 트렌드 전략은 시장의 추진력과 통합을 판단하기 위해 거래량 요인을 포함합니다.
  • 두 전략은 안정성을 향상시키고 잘못된 신호를 피하기 위해 서로를 확인합니다.
  • 9일 또는 14일 중장기 매개 변수를 사용하는 것은 일내 및 단기 거래에 적합합니다.

위험 과 최적화

  • 리버스 전략은 함락될 위험이 있고, 위험을 통제하기 위해 스톱 로스를 필요로 합니다.
  • 부피 가격 전략은 시장 방향이 잘못 판단되면 유출을 증가시킬 수 있습니다.
  • 가격 요인 및 CumPVT 요인의 가중이 추가 최적화를 위해 최적인지 테스트 할 수 있습니다.
  • 다른 날의 매개 변수를 테스트하여 가장 좋은 수익률을 얻을 수 있습니다.

결론

결론적으로, 이중 요인 역전 및 개선된 가격량 트렌드의 조합 전략은 역전 및 트렌드의 판단을 두 차원에서 결합합니다. 둘은 안정성을 향상시키기 위해 서로 신호를 확인할 수 있습니다. 트렌드 지표를 보조 판단으로 추가하는 것은 함정에 빠지기 쉬운 역전 전략에서 필요합니다. 또한 거래량 요인을 통합하는 것은 시장 역전 및 동력을 결정하는 데도 필수적입니다. 이 전략은 특정 실용적 가치와 함께 내일 및 단기 운영에 적합한 중장기 매개 변수를 사용합니다.


/*backtest
start: 2024-01-17 00:00:00
end: 2024-01-24 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 23/02/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 related article is copyrighted material from
//  Stocks & Commodities.
//
// 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


MPVT(Level,Scale,Length) =>
    pos = 0.0
    xCumPVT = 0.0
    xOHLC4 = ohlc4
    xV = volume
    rV = xV / 50000
    xCumPVT := nz(xCumPVT[1]) + (rV * (xOHLC4 - xOHLC4[1]) / xOHLC4[1])
    nRes = Level + Scale * xCumPVT
    xMARes = sma(nRes, Length)
    pos:= iff(nRes > xMARes, 1,
           iff(nRes < xMARes, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Modified Price-Volume Trend", 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, "---- Price-Volume Trend ----")
LevelPVT = input(1)
Scale = input(1)
LengthPVT = input(23)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posMPVT = MPVT(LevelPVT,Scale,LengthPVT)
pos = iff(posReversal123 == 1 and posMPVT == 1 , 1,
	   iff(posReversal123 == -1 and posMPVT == -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 )

더 많은