리소스 로딩... 로딩...

평균 반전 전략

저자:차오장, 날짜: 2024-06-17 14:57:59
태그:SMADEVMA

img

전반적인 설명

이 전략은 평균 회귀의 원칙에 기초하여, 거래 결정을 내리기 위해 이동 평균에서 가격의 오차를 사용하여 이루어집니다. 가격이 상단 범위를 벗어날 때 짧고, 하단 범위를 벗어날 때 길게됩니다. 가격이 이동 평균으로 되돌아 갈 때 포지션은 닫습니다. 이 전략의 핵심 가정은 가격이 항상 평균 수준으로 되돌아 갈 것이라는 것입니다.

전략 원칙

  1. 정해진 기간의 간단한 이동 평균 (SMA) (디폴트 20) 을 평균 가격 수준으로 계산합니다.
  2. 가격의 표준편차 (DEV) 를 계산하고 상단 및 하단 대역을 구성하는 데 사용하십시오. 상단 대역은 SMA 더하기 표준편차의 배수 (예정 1.5) 이며, 하단 대역은 SMA 빼기 표준편차의 배수입니다.
  3. 가격이 상위 범위를 넘어서면 쇼트, 하위 범위를 넘어서면 롱.
  4. 가격이 SMA를 넘을 때 긴 포지션을 닫고, 가격이 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")


관련

더 많은