듀얼 팩터 모멘텀 추적 반전 전략


생성 날짜: 2024-01-18 11:33:40 마지막으로 수정됨: 2024-01-18 11:33:40
복사: 0 클릭수: 571
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

듀얼 팩터 모멘텀 추적 반전 전략

개요

이 전략은 종합적으로 주식 가격 반전 요인과 동력 요인을 사용하여 시장의 단기 반전 및 중기 지속 가능성을 포착하기 위해 쌍방향 모델을 구축합니다. 전략은 먼저 123 형태를 사용하여 최근의 가격 반전 신호를 판단하고, 그 다음 라구에르 RSI 지표와 결합하여 중기 긴 선의 추세를 판단하고, 최종적으로 쌍방향 신호의 효과적인 결합을 달성합니다.

전략 원칙

이 전략은 두 부분으로 구성되어 있습니다.

  1. 123 형형 반전 인자

이 부분은 지난 2 일간의 종결 가격 변화를 판단하여 가격 단기 역전 신호를 발견한다. 구체적으로, 만약 전날의 종결 가격이 전 2 일보다 낮고, 오늘의 종결 가격이 전날보다 높다면, 가격 역전으로 상승한 신호를 판단할 수 있다. 스토흐 지표는 보조 판단을 위해 사용된다.

  1. 라겔 필터 기반의 RSI 인자

이 부분은 보다 민감한 RSI 지표를 구축한다. 전통적인 RSI 지표는 가격 변화에 대한 감수성이 낮으며, 라겔 필터는 가격 변화에 대한 감수성을 높이기 위해 더 적은 역사적 데이터로 지표를 구축할 수 있다. 새로운 RSI 지표는 중장선 추세를 판단한다.

결국, 전략은 두 가지 신호를 결합하여 단기 반전과 동시에 큰 추세가 반전되지 않도록 보장하여 반동 기회를 잡습니다.

전략적 이점

이 전략의 가장 큰 장점은 반전 인자와 트렌드 인자를 성공적으로 결합했다는 것입니다. 반전 인자는 단기 조정 후 가격 반발 기회를 포착 할 수 있으며, 트렌드 인자는 대가 / 하위 방향의 변화가 일어나지 않도록합니다. 단일 반전 또는 운동량 모델에 비해 이중 인자 모델은 거짓 신호를 줄이는 전제 하에 대가 가동의 정확성을 향상시킬 수 있습니다.

또한, 라겔 RSI 지표의 추가는 가격 변화에 대한 모델의 민감성을 증가시킵니다. 이는 특히 고주파 거래에 중요합니다.

위험 분석

이 전략의 주요 위험은 이중 인자 신호가 분산 될 수 있다는 것입니다. 특히 시장의 흔들림 조정 기간 동안, 단기 가격의 자주 반전과 동시에 중장선 추세가 변할 수 있습니다. 이 때 두 가지 신호가 잘못된 조합 또는 지연이 발생할 가능성이 높습니다. 이것은 전략이 잘못된 신호를 생성하여 최적의 출장 시기를 놓치거나 불필요한 손실을 초래할 수 있습니다.

또한, 매개 변수 선택이 잘못되면 전략의 성능이 떨어질 수 있다. 역전 요인과 트렌드 요인에 대응하는 기술 지표 매개 변수는 각각 최적화 및 테스트가 필요하며, 부적절한 매개 변수 조합은 전략의 효과를 크게 저하시킬 수 있다.

최적화 방향

이 전략의 다음 단계의 최적화 방향은 주로 신호 필터링과 변수 선택에 초점을 맞추고 있다. 더 많은 필터링 조건을 추가하는 것을 고려할 수 있으며, 이중 인자 신호가 오차가 발생했을 때 역할을 하며, 높은 확실성 시나리오에서만 포지션을 열도록 한다. 이것은 잘못된 신호율을 크게 줄일 수 있다.

매개 변수 선택에서, 기계 학습 및 과학 실험의 방법을 시도할 수 있으며, 각 매개 변수 조합에 대해 시스템 테스트를 수행하여 최적의 매개 변수를 찾을 수 있다. 이것은 높은 계산 능력의 지원이 필요하지만, 전략의 안정성을 크게 향상시킬 수 있다.

요약하다

이 전략은 반전 요인과 트렌드 요인을 성공적으로 결합하여 단기 반발 및 중기 지속 기회를 잡기 위해 이중 요인 모델을 사용합니다. 추가된 라겔 RSI 필터는 가격 변화에 대한 모델의 민감성을 향상시킵니다. 다음 작업은 전략의 효과를 더욱 강화하기 위해 신호 필터링과 매개 변수 최적화에 집중됩니다.

전략 소스 코드
/*backtest
start: 2024-01-10 00:00:00
end: 2024-01-17 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 21/01/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
// This is RSI indicator which is more sesitive to price changes. 
// It is based upon a modern math tool - Laguerre transform filter.
// With help of Laguerre filter one becomes able to create superior 
// indicators using very short data lengths as well. The use of shorter 
// data lengths means you can make the indicators more responsive to 
// changes in the price.
//
// 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

LB_RSI(gamma,BuyBand,SellBand) =>
    pos = 0.0
    xL0 = 0.0
    xL1 = 0.0
    xL2 = 0.0
    xL3 = 0.0
    xL0 := (1-gamma) * close + gamma * nz(xL0[1], 1)
    xL1 := - gamma * xL0 + nz(xL0[1], 1) + gamma * nz(xL1[1], 1)
    xL2 := - gamma * xL1 + nz(xL1[1], 1) + gamma * nz(xL2[1], 1)
    xL3 := - gamma * xL2 + nz(xL2[1], 1) + gamma * nz(xL3[1], 1)
    CU = (xL0 >= xL1 ? xL0 - xL1 : 0) + (xL1 >= xL2 ? xL1 - xL2 : 0)  + (xL2 >= xL3 ? xL2 - xL3 : 0)
    CD = (xL0 >= xL1 ? 0 : xL1 - xL0) + (xL1 >= xL2 ? 0 : xL2 - xL1)  + (xL2 >= xL3 ? 0 : xL3 - xL2)
    nRes = iff(CU + CD != 0, CU / (CU + CD), 0)
    pos := iff(nRes > BuyBand, 1,
    	     iff(nRes < SellBand, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Laguerre-based RSI", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
gamma = input(0.5, minval=-0.1, maxval = 0.9)
BuyBand = input(0.8, step = 0.01)
SellBand = input(0.2, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posLB_RSI = LB_RSI(gamma,BuyBand,SellBand)
pos = iff(posReversal123 == 1 and posLB_RSI == 1 , 1,
	   iff(posReversal123 == -1 and posLB_RSI == -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 )