
이 전략은 종합적으로 주식 가격 반전 요인과 동력 요인을 사용하여 시장의 단기 반전 및 중기 지속 가능성을 포착하기 위해 쌍방향 모델을 구축합니다. 전략은 먼저 123 형태를 사용하여 최근의 가격 반전 신호를 판단하고, 그 다음 라구에르 RSI 지표와 결합하여 중기 긴 선의 추세를 판단하고, 최종적으로 쌍방향 신호의 효과적인 결합을 달성합니다.
이 전략은 두 부분으로 구성되어 있습니다.
이 부분은 지난 2 일간의 종결 가격 변화를 판단하여 가격 단기 역전 신호를 발견한다. 구체적으로, 만약 전날의 종결 가격이 전 2 일보다 낮고, 오늘의 종결 가격이 전날보다 높다면, 가격 역전으로 상승한 신호를 판단할 수 있다. 스토흐 지표는 보조 판단을 위해 사용된다.
이 부분은 보다 민감한 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 )