전략에 따른 이선적 회귀 추세

저자:차오장, 날짜: 2023-11-17 16:51:33
태그:

img

전반적인 설명

이중선 회귀 트렌드 다음 전략은 가격 추세를 결정하기 위해 빠르고 느린 선형 회귀 사이의 차이를 사용하여 입점 신호로 사용합니다. 빠른 선형 회귀가 임계점을 넘어서면 길게 이동하고 아래에 넘어가면 빠져 나갑니다. 또한 가격이 EMA를 넘었을 때만 입력하기 위해 EMA를 필터로 사용합니다.

전략 논리

이 전략은 먼저 두 개의 선형 회귀선을 계산하여 서로 다른 기간을 계산합니다. 하나는 짧은 기간과 함께 빠르고 하나는 긴 기간과 함께 느립니다. 그 다음 두 가지 사이의 차이를 계산합니다. 빠른 회귀가 느린 회귀보다 높을 때 그 차이는 긍정적 인 상승 추세를 나타냅니다. 빠르면 느린 아래에서 그 차이는 부정적인 하락 추세를 나타냅니다.

이 전략은 차차선이 임계선을 넘어서면 긴 경로로 들어가고, 그 밑을 넘어가면 종료됩니다. 또한 트렌드가 아닌 움직임을 필터링하기 위해 가격이 200 기간 EMA 이상의 것을 요구합니다.

이점 분석

  1. 이중 선형 회귀는 가격 추세를 잘 파악할 수 있습니다.

  2. EMA 필터는 트렌드가 아닌 움직임에서 일부 잘못된 신호를 제거합니다.

  3. 단순하고 명확한 논리, 이해하기 쉽고 실행하기 쉽습니다.

위험 분석

  1. 부적절한 LR 기간은 과도한 소음을 발생시킬 수 있습니다.

  2. EMA 필터는 강한 트렌드에서 기회를 놓칠 수 있습니다.

  3. 다양한 시장에서 손해를 보는 경향이 있습니다.

해결책:

  1. 소음을 줄이기 위해 LR 기간을 최적화합니다.

  2. 시장 조건에 따라 EMA 기간을 동적으로 조정합니다.

  3. 스톱 손실을 제어 손실에 추가합니다.

최적화

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. 가장 좋은 조합을 찾기 위해 빠르고 느린 LR 기간을 최적화합니다.

  2. 다른 필터들, 예를 들어 볼링거 밴드, KDJ가 EMA가 아니라

  3. 리스크를 제어하기 위해 동적 스톱 로스를 추가합니다.

  4. 트렌딩 주식을 선택하기 위해 주식 선택과 결합합니다.

  5. 시장 조건에 따라 적응 가능한 매개 변수를 개발합니다.

요약

이중 선형 회귀 전략은 이중 선형 회귀 및 EMA 필터로 트렌드를 캡처하는 데 간단하고 직접적입니다. 그러나 매개 변수 최적화, 스톱 로스 등을 통해 해결해야 할 위험이 있습니다. 적절하게 조정되면 트렌딩 시장을 효과적으로 거래 할 수 있습니다.


/*backtest
start: 2022-11-10 00:00:00
end: 2023-11-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © TradingAmmo

//@version=4
strategy("Linear trend", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075, currency='USD')
startP = timestamp(input(2017, "Start Year"), input(12, "Month"), input(17, "Day"), 0, 0)
end   = timestamp(input(9999, "End Year"),   input(1, "Month"),   input(1, "Day"),   0, 0)
_testPeriod() =>
    iff(time >= startP and time <= end, true, false)

src = close
len1 = input(defval=13, minval=1, title="Fast LR")
len2 = input(defval=55, minval=1, title="Slow LR")

lag1 = input(0, title="Lag for fast")
lag2 = input(0, title="Lag for slow")

threshold  = input(0,step=0.5, title="Threshold")

fast_lr = linreg(src, len1, lag1)
slow_lr = linreg(src, len2, lag2)
lr = fast_lr - slow_lr
plot_fast = plot(lr, color = lr > 0 ? color.green : color.red)
plot(threshold, color=color.purple)

long_condition = crossover(lr, threshold) and close > ema(close, 200) and _testPeriod()
strategy.entry('BUY', strategy.long, when=long_condition) 

short_condition = crossunder(lr, threshold) 
strategy.close('BUY', when=short_condition) 



더 많은