SMA와 롤링 트렌드 라인을 기반으로 한 양적 거래 전략

저자:차오장, 날짜: 2024-02-04 15:18:12
태그:

img

전반적인 설명

이 전략은 간단한 이동 평균 (SMA) 과 롤링 선형 회귀 트렌드 라인을 결합합니다. 닫기 가격이 SMA와 트렌드 라인 모두 위에있을 때 긴 입구 조건을 설정하고 닫기 가격이 그 아래에있을 때 출구 조건을 설정합니다. 이 전략은 주로 SMA를 거래 신호로 사용하고 채널 지원을위한 롤링 트렌드 라인을 사용합니다. 상향 채널의 브레이크오웃에 거래에 들어가고 하향 채널의 브레이크오웃에 출입합니다.

전략 논리

이 전략의 주요 구성 요소는 다음과 같습니다.

  1. SMA: 간단한 이동 평균, 시그널 라인으로 기간 (smaPeriod) 의 평균 폐쇄 가격을 계산합니다.

  2. 롤링 트렌드 라인 (Rolling Trendline): 트렌드 신호로 창 (창) 위에 가장 좋은 선형 회귀 라인을 부착한다. 일반 최소 제곱 방법으로 계산된다.

  3. 진입 조건: 마감 가격> SMA와 트렌드 라인에서 긴 경로로 이동합니다.

  4. 출구 조건: 마감 가격 < SMA 및 트렌드 라인 (SMA and trendline) 이 되면 포지션을 닫습니다.

따라서 전략은 주로 입구에 SMA 신호 브레이크오웃과 출구에 채널 브레이크오웃에 의존합니다. 브레이크오웃 연산을 따르는 트렌드를 구현하기 위해 MA의 평균 반전 속성과 선형 회귀 선에 의한 채널 지원을 사용합니다.

이점 분석

이 전략은 MA와 트렌드 라인의 이중 필터를 통합하여 잘못된 브레이크 아웃 거래를 효과적으로 줄일 수 있습니다. 한편, 롤링 트렌드 라인은 신뢰할 수있는 결정을 위해 더 정확한 채널 지원을 제공합니다. 주요 장점은 다음과 같습니다.

  1. 이중 필터 메커니즘은 잘못된 파장을 방지하고 의사 결정의 정확성을 향상시킵니다.
  2. 롤링 트렌드 라인은 더 정확한 채널 거래를 위해 동적인 채널 지원을 제공합니다.
  3. 간단하고 직관적인 거래 논리, 이해하기 쉽고 실행하기 쉽습니다.
  4. 사용자 정의 가능한 매개 변수는 다른 시장 환경에 적응합니다.

위험 분석

이 전략에는 몇 가지 위험도 있습니다.

  1. SMA와 트렌드 라인의 부적절한 매개 변수는 트레이드를 놓치거나 잘못된 브레이크가 너무 많을 수 있습니다.
  2. 매우 변동적인 시장에서, SMA와 트렌드 라인의 채널 지원은 약화 될 수 있습니다.
  3. 실패한 브레이크오웃은 손실로 이어질 수 있습니다. 엄격한 스톱 로스가 필요합니다.

이러한 위험에 대한 최적화 방향:

  1. 다른 제품들에 대한 매개 변수를 최적화합니다.
  2. 단일 손실을 줄이기 위해 스톱 손실 범위를 늘려
  3. 휘발성 시장에서 거래를 중단하십시오. 함정에 빠지지 않으려면.

전략 최적화

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

  1. 동적 조정 함수와 시장 방식에 기반한 슬리핑 매개 변수를 추가합니다.

  2. 유연한 스톱 로스 메커니즘을 개발합니다. 가격 비율로 트렌드 라인을 깨면 스톱 로스를 설정합니다.

  3. 결정 정확성을 높이기 위해 부피, RSI 등 다른 지표에서 필터를 추가합니다.

  4. 역전 버전을 개발합니다. 가격이 바닥에 접근하고 하향 채널을 깨는 경우 긴 이동합니다.

결론

이 전략은 트렌드 다음 운영을 구현하기 위해 이동 평균과 채널 지원을 통한 거래 신호를 통합합니다. 이중 필터는 잘못된 브레이크아웃 확률을 줄이고 의사결정 품질을 향상시킵니다. 간단한 매개 변수 설정과 명확한 논리를 가지고 있으며, 구현 및 최적화하기가 쉽습니다. 요약하면이 전략은 신뢰할 수 있고 간단하고 직관적인 트렌드 브레이크아웃 거래 시스템을 형성합니다.


/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("SMA Strategy with Rolling Trendline", overlay=true)

// Input parameters
smaPeriod = input(14, title="SMA Period")
window = input(20, title="Trendline Window")
startDate = input(timestamp("2023-01-01"), title="Start Date")
endDate = input(timestamp("2023-12-31"), title="End Date")

// Calculating SMA
sma = sma(close, smaPeriod)

// Function to calculate linear regression trendline for a window
linreg_trendline(window) =>
    sumX = 0.0
    sumY = 0.0
    sumXY = 0.0
    sumX2 = 0.0
    for i = 0 to window - 1
        sumX := sumX + i
        sumY := sumY + close[i]
        sumXY := sumXY + i * close[i]
        sumX2 := sumX2 + i * i
    slope = (window * sumXY - sumX * sumY) / (window * sumX2 - sumX * sumX)
    intercept = (sumY - slope * sumX) / window
    slope * (window - 1) + intercept

// Calculating the trendline
trendline = linreg_trendline(window)

// Entry and Exit Conditions
longCondition = close > sma and close < trendline
exitLongCondition = close < sma and close > trendline

// Strategy logic
if (true)
    if (longCondition)
        strategy.entry("Long", strategy.long)
    if (exitLongCondition)
        strategy.close("Long")

// Plotting
plot(sma, title="Simple Moving Average", color=color.blue)
plot(trendline, title="Rolling Trendline", color=color.red)
plotshape(series=longCondition, title="Enter Trade", location=location.belowbar, color=color.green, style=shape.triangleup)
plotshape(series=exitLongCondition, title="Exit Trade", location=location.abovebar, color=color.red, style=shape.triangledown)


더 많은