이 전략은 123 역전 전략과 선형 회귀 절단 전략을 결합하여 다인자 구동의 조합 거래 전략을 구현한다. 123 역전 전략은 최근 2 거래 날의 가격 관계를 판단하고, 스토흐 지표와 결합하여 역전 신호를 판단한다. 선형 회귀 절단 전략은 선형 회귀 분석을 사용하여 가격과 트렌드 라인의 관계를 판단하여 거래를 생성한다. 신호 두 가지 전략은 상호 검증하여 가짜 신호를 효과적으로 필터링 할 수 있다.
이 전략은 다음과 같은 원칙에 기초하고 있습니다.
만약 최근 2일간의 거래상 종결 가격의 관계가 오늘 종결 가격이 어제보다 높고, 스토흐의 빠른 선이 느린 선보다 낮다면, 보이스틱 반전 신호가 있다고 생각해야 합니다.
만약 최근 2일간의 거래상 종결값의 관계가 오늘 종결값이 어제보다 낮고, 스토흐 패스트 라인이 느린 라인보다 높다면, 하향 반전 신호가 있다고 볼 수 있습니다.
판단의 규칙은 다음과 같습니다.
오늘 종료 가격> 어제 종료 가격 및 Stoch 단선 을 설정하면 구매 신호가 생성됩니다.
오늘 종료 가격 < 어제 종료 가격 및 Stoch 단선> Stoch 느린 라인 및 Stoch 단선 < 설정한 경우, 판매 신호를 생성
이 전략은 스토흐의 K선 주기 길이를 계산하는 스토흐의 K선 평준화 주기 K소othing의 스토흐의 느린 선 평준화 주기 DL 길이를 계산하는 스토흐의 빠른 선 판단 임계 레벨을 설정하는 스토흐 지표 파라미터를 필요로 한다.
이 전략은 선형 회귀 분석을 기반으로 가격과 선형 회귀 트렌드 라인의 관계를 판단하며, 판단 규칙은 다음과 같습니다.
마감값이 선형 회귀 절단 거리보다 크면 구매 신호를 생성합니다.
마감값이 선형 회귀 절단점보다 작으면 판매 신호를 생성합니다.
이 전략은 선형 회귀 주기 LengthLRI를 설정하고, 선형 회귀 입력 데이터 소스 xSeria。를 설정해야 한다.
이 조합 전략은 123 역전 전략과 선형 회귀 절단 전략의 구매/판매 신호를 동시에 충족시켜야 실제 거래 지시를 생성하여 가짜 신호를 효과적으로 제거하고 거래 효과를 향상시킬 수 있습니다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
두 가지 다른 유형의 전략을 결합하면, 두 가지 전략이 동시에 신호를 생성해야 실제 주문이 이루어집니다. 이 다중 인수 검증 메커니즘은 특정 전략에서 때때로 발생하는 잘못된 신호를 필터링하여 불필요한 거래를 줄이고 신호 품질을 효과적으로 향상시킬 수 있습니다.
선형 회귀 단점은 가격과 트렌드 라인의 관계를 실시간으로 반영할 수 있으며, 가격이 트렌드에서 크게 벗어났을 경우, 전략이 위치 방향을 조정할 수 있습니다. 이렇게 하면 적시에 손실을 막고, 역사적 추세에 갇히지 않도록 할 수 있습니다.
선형 회귀 전략은 트렌드 매수점 식별에 더 능숙하다. 123 역전 전략은 역전점 식별에 집중한다. 두 가지 전략은 트렌드 거래와 역전 거래의 장점을 잘 결합 할 수 있다.
두 가지 전략 모두 특정 매개 변수를 사용자 정의 할 수 있으며, 다른 품종과 다른 추세에 따라 매개 변수를 최적화하여 조합 전략의 효과를 최적화 할 수 있습니다.
이 전략에는 다음과 같은 위험도 있습니다.
두 가지 전략의 거래 신호를 충족시켜야 하며, 단 하나의 전략에만 의존하여 수익을 얻을 수 있는 부분적인 기회를 놓치게 된다. 한 가지 전략의 효과가 약해지면, 전체 거래 효과에 영향을 미치게 된다.
선형 회귀는 일정 역사 데이터를 계산해야 하며, 급격한 사건에 대한 실시간 반응을 할 수 없으며, 일정 지연성이 존재한다. 가격이 급격히 상승하면, 선형 회귀 트렌드 라인이 일정 시간 조정되어야 하며, 이 기간 동안 잘못된 신호가 발생할 수 있다.
두 가지 전략 모두 적절한 매개 변수를 선택해야 하며, 특정 품종에 대해 독립적으로 매개 변수를 조정해야 할 수도 있다. 매개 변수가 잘못 선택되면 전략에 큰 영향을 줄 수 있다.
대응 위험은 다음과 같은 방법으로 줄일 수 있습니다.
적절히 풀어 놓은 조합 신호 발동 조건, 너무 많은 기회를 놓치지 않도록
트렌드 지표와 같은 대안적인 선형 회귀를 결합하여 더 실시간 트렌드 판단을 얻습니다.
매개 변수 최적화 및 매개 변수 선택 효과를 향상시키는 기계 학습 방법
이 전략은 다음과 같은 부분에서 더욱 개선될 수 있습니다.
역사 데이터를 수집하고, 파라미터 최적화 목표를 설계하고, 유전적 알고리즘, 베이스 최적화 등과 같은 기계 학습 알고리즘을 사용하여 최적의 파라미터 조합을 검색할 수 있다.
ATR, 트렌드 지표 등과 결합하여 한 거래의 최대 손실을 제어하기 위해 중지 손실 규칙을 설정할 수 있습니다.
거래 신호에 기초하여 평행선 필터, 브린 밴드 판단 등의 상장 상장에 대한 보조 조건을 추가할 수 있으며, 포지션을 조정하는 빈도를 낮추고, 피하는 것을 피한다.
자연어 처리 기술을 사용하여 시장 참여자의 감정을 판단하여 거래 결정을 지원합니다.
LSTM, GRU 등과 같은 딥러닝 모델을 사용하여 가격에 대한 예측을 하고, 전략적 의사결정에 중요한 참고자료로 사용한다.
이 전략은 123 역전 전략과 선형 회귀 절단 전략의 조합을 통해, 다인자 구동의 정량 거래를 구현하고, 검증 메커니즘은 가짜 신호를 효과적으로 필터링하고, 반전 및 트렌드 거래 기회를 잡는 것을 고려할 수 있습니다. 그러나 전략에는 약간의 뒤처진 위험도 있습니다.
/*backtest
start: 2023-09-18 00:00:00
end: 2023-09-19 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 25/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
// Linear Regression Intercept is one of the indicators calculated by using the
// Linear Regression technique. Linear regression indicates the value of the Y
// (generally the price) when the value of X (the time series) is 0. Linear
// Regression Intercept is used along with the Linear Regression Slope to create
// the Linear Regression Line. The Linear Regression Intercept along with the Slope
// creates the Regression line.
//
// 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
LRI(Length,xSeria) =>
pos = 0.0
xX = Length * (Length - 1) * 0.5
xDivisor = xX * xX - Length * Length * (Length - 1) * (2 * Length - 1) / 6
xXY = 0.0
for i = 0 to Length-1
xXY := xXY + (i * xSeria[i])
xSlope = (Length * xXY - xX * sum(xSeria, Length)) / xDivisor
xLRI = (sum(xSeria, Length) - xSlope * xX) / Length
pos:= iff(close > xLRI, 1,
iff(close < xLRI, -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & Line Regression Intercept", 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, "---- Line Regression Intercept ----")
LengthLRI = input(14, minval=1)
xSeria = input(title="Source", type=input.source, defval=close)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posLRI = LRI(LengthLRI,xSeria)
pos = iff(posReversal123 == 1 and posLRI == 1 , 1,
iff(posReversal123 == -1 and posLRI == -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 )