더블 팩터 반전 및 개선된 가격 볼륨 추세 결합 전략


생성 날짜: 2024-01-25 14:46:36 마지막으로 수정됨: 2024-01-25 14:46:36
복사: 1 클릭수: 612
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

더블 팩터 반전 및 개선된 가격 볼륨 추세 결합 전략

개요

이 전략은 쌍인자 역전과 개선 가격량 경향의 두 가지 기법을 결합하여 종합 거래 신호를 얻는다. 이 중 쌍인자 역전 전략은 울프 젠센의 책 P183의 생각에 기반하여, 주식의 2 일 이내에 종식 가격 역전과 무작위 지표 조건이 성립할 때 신호를 발생시킨다. 개선 가격량 경향 전략은 가격과 거래량에 대한 공동 연구 판단을 바탕으로, 시장의 조정 축적과 시대의 장점을 판단한다. 두 가지 전략은 상호 검증 할 수 있으며, 조합을 사용하면 안정성을 높일 수 있다.

전략 원칙

이중 인자 반전자 전략은 2일 종전 가격 반전 원리와 무작위 지표의 다공간 판단을 사용한다. 만약 전날 종전 가격이 높고 오늘 종전 가격이 반전 하락하고, 빠른 무작위 지표가 느린 무작위 지표보다 낮고 빠른 무작위 지표가 50보다 높다면, 공백 신호가 발생한다. 만약 전날 종전 가격이 낮고 오늘 종전 가격이 반전 상승하고, 빠른 무작위 지표가 느린 무작위 지표보다 높고, 빠른 무작위 지표가 50보다 낮다면, 다목 신호가 발생한다.

개선된 가격량 트렌드 전략은 가격과 거래량에 대한 공동 연구 판단에 기초한다. 계산 공식은:PxVFactor = PriceFactor + Scale * CumPVT, 여기서 PriceFactor는 가격 인수이고 CumPVT는 누적 에너지 지표이다. 그리고는 PxVFactor의 Lengthday 간단한 이동 평균을 계산하고, 현재 PxVFactor 값과 비교하여 시장의 경향과 강도를 판단한다.

조합 전략은 2개의 하위 전략의 신호를 종합적으로 고려하며, 쌍인자 역전과 개선된 가격량 추세가 동시 상향 또는 하향으로 갈 때, 그에 따른 상공 신호를 생성한다.

우위 분석

  • 이중 인자 역전 전략은 가격 역전과 무작위 지표 판단을 결합하여 단기 극단을 효과적으로 식별하고 역전 기회를 잡을 수 있습니다.
  • 개량된 가격량 트렌드 전략에 거래량 요소를 추가하여 시장의 축적력을 정리할 때를 판단할 수 있다.
  • 두 가지 전략이 서로 검증되어 안정성을 높이고 잘못된 신호를 방지할 수 있습니다.
  • 9일 또는 14일 등의 중장기적인 매개 변수를 사용하여 일일 및 단선 운영에 적합하다.

위험과 최적화

  • 반전 전략에는 수축의 위험이 있으며, 위험을 통제하기 위해 스톱로스를 설정해야 한다.
  • 수량 가격 전략에는 회수율이 증가할 가능성이 있으며, 시장의 방향이 잘못 판단되면 손실이 확대된다.
  • PriceFactor와 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 )