평균 회귀 전략

SMA DEV MA
생성 날짜: 2024-06-17 14:57:59 마지막으로 수정됨: 2024-06-17 14:57:59
복사: 0 클릭수: 600
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

평균 회귀 전략

개요

이 전략은 평균 회귀의 원칙에 기초하여, 가격이 이동 평균에서 벗어난 경우를 사용하여 거래 결정을 내립니다. 가격이 상향으로 이동 할 때 공백을하고, 하향으로 이동 할 때 더 많이하고, 가격이 이동 평균으로 돌아가는 경우 평점입니다. 이 전략의 핵심은 가격이 항상 평균 수준으로 돌아간다는 가정입니다.

전략 원칙

  1. 지정된 주기 (기본 20) 의 간단한 이동 평균 (SMA) 을 가격의 평균 수준으로 계산한다.
  2. 가격의 표준차를 계산하고, 이를 통해 상하 궤도를 구축한다. 상하 궤도는 SMA 더하기 표준차의 배수이다. 기본 1.5이다. 하하 궤도는 SMA 빼기 표준차의 배수이다.
  3. 가격이 상향으로 올라갈 때 공백을 만들고, 하향으로 내려갈 때 더 많이 합니다.
  4. 하향으로 SMA를 통과할 때 하향으로 하향으로 하향으로 하향으로 하향으로 하향으로 하향으로 하향으로 하향으로 하향으로 하향으로 하향으로 하향으로 하향으로 하향으로 하향으로 하향으로 하향으로 하향으로 하향으로 하향으로 하향으로 하향으로 하향으로 하향으로 하향으로 하향으로 하향으로 하향
  5. 이동 평균, 상반, 하반, 그리고 거래 신호를 차트에 표시하십시오.

우위 분석

  1. 평균값 회귀 전략은 가격이 항상 평균값으로 돌아가는 통계학적 원칙에 기초하여, 장기적으로 보면 일정 수익 확률이 있다.
  2. 위아래 선로 설정은 명확한 입구와 출구 지점을 제공하여 실행과 관리를 용이하게 합니다.
  3. 전략적 논리는 간단하고 명확하며, 이해하기 쉽고 구현하기 쉽습니다.
  4. 명백한 평균값 회귀 특성이 있는 품종과 주기에는 적용된다.

위험 분석

  1. 시장 추세가 변할 때, 가격은 평균에서 오랫동안 벗어나지 못하고, 전략이 실패할 수 있다.
  2. 스탠다드비차 곱셈을 잘못 설정하면 거래 빈도가 너무 높거나 너무 낮아 수익에 영향을 줄 수 있습니다.
  3. 극단적인 상황에서는 가격이 급격하게 변동하며, 상하의 궤도가 작동하지 않을 수 있습니다.
  4. 품종이나 주기가 평균값 회귀의 특징이 없다면 이 전략은 수익성이 없을 수 있다.

최적화 방향

  1. SMA의 주기 및 표준 차등 배수를 최적화 테스트하여 최적의 변수를 찾습니다.
  2. 트렌드를 판단하는 지표를 도입하고, 트렌드가 명확할 때 역경 거래를 피한다.
  3. 표준 차이의 바깥에 ATR과 같은 변동률 지표를 추가하여 동적 궤도를 구성한다.
  4. 슬라이드 포인트, 수수료와 같은 거래 비용을 고려하여 재측정의 진실성을 제어한다.
  5. 손해 차단, 포지션 관리 등 바람 제어 모듈을 추가한다.

요약하다

평균 회귀 전략은 수학적 원리에 기반한 정량 거래 전략으로 가격의 평균 회귀를 구축하여 거래 결정을 내린다. 이 전략의 논리는 간단하고 명확하게 실행되지만 품종의 선택과 매개 변수의 최적화에 주의를 기울여야 한다. 실제 응용에서는 전략의 안정성과 수익성을 높이기 위해 추세, 거래 비용, 위험 제어 등의 요소를 고려해야 한다.

전략 소스 코드
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Mean Regression Strategy", overlay=true)

// Define the lookback period for the moving average
length = input.int(20, title="Moving Average Length")
mult = input.float(1.5, title="Standard Deviation Multiplier")

// Calculate the moving average and standard deviation
ma = ta.sma(close, length)
dev = mult * ta.stdev(close, length)

// Calculate upper and lower bands
upper_band = ma + dev
lower_band = ma - dev

// Plot the moving average and bands
plot(ma, color=color.blue, linewidth=2, title="Moving Average")
plot(upper_band, color=color.red, linewidth=2, title="Upper Band")
plot(lower_band, color=color.green, linewidth=2, title="Lower Band")

// Entry conditions
long_condition = ta.crossover(close, lower_band)
short_condition = ta.crossunder(close, upper_band)

// Exit conditions
exit_long_condition = ta.crossunder(close, ma)
exit_short_condition = ta.crossover(close, ma)

// Strategy orders
if (long_condition)
    strategy.entry("Long", strategy.long)
if (short_condition)
    strategy.entry("Short", strategy.short)

if (exit_long_condition)
    strategy.close("Long")
if (exit_short_condition)
    strategy.close("Short")

// Plot signals on the chart
plotshape(series=long_condition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal")
plotshape(series=short_condition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal")