가장 높은/최저 센터 룩백 전략

저자:차오장, 날짜: 2023-12-28 15:42:10
태그:

img

전반적인 설명

가장 높은/최저 센터 룩백 전략은 트렌드를 따르는 전략이다. 주요 아이디어는 과거 특정 기간 동안 가장 높은 가격과 가장 낮은 가격의 중간 가격을 벤치마크 가격으로 계산하고, 이 벤치마크 가격과 변동성을 기반으로 엔트리존과 엑시트존을 계산하는 것이다. 가격이 엔트리존에 들어갈 때, 긴; 가격이 엔트리존에 들어갈 때, 포지션을 닫는다.

전략 논리

이 전략은 주로 다음과 같은 단계를 통해 실행됩니다.

  1. 지난 lookback_length 기간 동안 가장 높은 가격 h와 가장 낮은 가격 l를 계산하고 EMA로 평평화합니다.
  2. h와 l의 중간값을 중앙값으로 계산합니다.
  3. ATR 및 ATR 곱셈에 기초한 변동성 비전을 계산합니다.
  4. 중앙과 볼라를 기반으로 입력 구역 상부와 출구 구역 하위를 계산
  5. 가격 가격 상위 상위를 깨면 길게; 가격이 하위 상위를 깨면 닫습니다.

이 방법으로, 가격이 트렌드 상태에 들어갈 때 트렌드를 추적할 수 있습니다. 동시에, 위험은 변동성을 통해 제어 될 수 있습니다.

이점 분석

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 트렌드를 효과적으로 추적하고 시간에 대한 가격 변화를 포착 할 수 있습니다.
  2. 가장 높은 가격과 가장 낮은 가격의 중간 가격을 사용하면 잘못된 파업의 확률을 줄일 수 있습니다.
  3. 변동성은 위험을 제어하기 위해 자동으로 조정할 수 있습니다.
  4. 포지션 보유 시간은 짧아서 더 자주 거래할 수 있습니다.
  5. 구현하기 쉽고 이해하기 쉽고 최적화하기 쉽습니다.

위험 분석

이 전략은 또한 몇 가지 위험을 안고 있습니다.

  1. 범위에 제한된 시장에서 더 많은 불필요한 거래가 발생할 수 있습니다.
  2. ATR 크기와 곱셈의 설정은 전략 성능에 영향을 미치므로 신중한 테스트와 최적화를 요구합니다.
  3. 중간 가격을 깨는 후 인하가 중단 손실을 일으킬 수 있습니다.
  4. 트렌드 반전 속도가 너무 빨라지면 더 큰 손실이 발생할 수 있습니다.

이러한 위험을 통제하기 위해 최적화는 다음과 같은 측면에서 수행 될 수 있습니다.

  1. 변동성을 줄이고 필터 윙사브를 조정하기 위해 ATR 매개 변수를 조정합니다.
  2. 불필요한 트레이드를 피하기 위해 필터를 추가합니다.
  3. 손익을 확보하기 위해 이동 스톱 손실을 사용
  4. 실제 트렌드 시작과 끝을 판단하기 위해 트렌드 지표를 결합합니다.

최적화 방향

이 전략은 또한 더 많은 최적화를 할 수 있습니다.

  1. 테스트 매개 변수 효과는 다른 시장과 기간에 걸쳐
  2. 기계 학습 알고리즘으로 매개 변수를 자동으로 최적화
  3. 트렌드 시작과 끝을 판단하기 위해 더 많은 지표를 포함
  4. 위치 크기를 동적으로 조정하는 것을 고려하십시오.
  5. 극단적 인 감정으로 인한 편견을 피하기 위해 감정 지표를 포함하십시오.

이러한 최적화를 통해 전략 안정성과 수익성이 더욱 향상될 것으로 예상할 수 있습니다.

결론

가장 높은/최저 센터 룩백 전략은 트렌드를 따르는 전략으로 간단하고 실용적입니다. 가격 변화를 시간적으로 파악하고 트렌드를 추적하며 변동성을 통해 위험을 제어 할 수 있습니다. 전략은 구현하기가 쉽고 양적 거래 초보자가 배우고 연습하기에 적합합니다. 매개 변수와 규칙을 최적화함으로써 전략 성능을 더욱 향상시킬 수 있습니다. 일반적으로 이것은 권장되는 양적 전략입니다.


/*backtest
start: 2023-11-27 00:00:00
end: 2023-12-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Highest/Lowest Center Lookback Strategy", overlay=true)

lookback_length = input(200, type=input.integer, minval=1, title="Lookback Length")
smoother_length = input(5, type=input.integer, minval=1, title="Smoother Length")
atr_length = input(10, type=input.integer, minval=1, title="ATR Length")
atr_multiplier = input(1.5, type=input.float, minval=0.5, title="ATR Multiplier")

vola = atr(atr_length) * atr_multiplier
price = sma(close, 3)

l = ema(lowest(low, lookback_length), smoother_length)
h = ema(highest(high, lookback_length), smoother_length)
center = (h + l) * 0.5
upper = center + vola
lower = center - vola
trend = price > upper ? true : (price < lower ? false : na)

bull_cross = crossover(price, upper)
bear_cross = crossunder(price, lower)

strategy.entry("Buy", strategy.long, when=bull_cross)
strategy.close("Buy", when=bear_cross)

plot(h, title="High", color=color.red, transp=75, linewidth=2)
plot(l, title="Low", color=color.green, transp=75, linewidth=2)

pc = plot(center, title="Center", color=color.black, transp=25, linewidth=2)
pu = plot(upper, title="Upper", color=color.green, transp=75, linewidth=2)
pl = plot(lower, title="Lower", color=color.red, transp=75, linewidth=2)

fill(pu, pc, color=color.green, transp=85)
fill(pl, pc, color=color.red, transp=85)

bgcolor(trend == true ? color.green : (trend == false ? color.red : color.gray), transp=85)

더 많은