추세 추종 이동 평균 거래 전략


생성 날짜: 2024-01-05 13:48:07 마지막으로 수정됨: 2024-01-05 13:48:07
복사: 0 클릭수: 673
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

추세 추종 이동 평균 거래 전략

개요

이 전략은 트렌드를 추적하는 이동 평균을 기반으로 한 거래 전략이다. 이 전략은 상위 가격과 최저 가격의 이동 평균을 사용하여 시장의 흐름을 판단하고, 트렌드 전환점에서 대응하는 거래 신호를 생성한다. 가격이 상향 추적하는 이동 평균을 돌파 할 때 더 많이하고, 가격이 하향 추적하는 이동 평균을 깨면 공백한다. 이 전략은 동시에 ATR을 사용하여 중지 및 중지 수준을 설정한다.

전략 원칙

이 전략은 시장의 흐름을 판단하기 위해 다른 파라미터 세트의 최고 가격과 최저 가격의 간단한 이동 평균을 사용합니다. 구체적으로, 그것은 두 개의 이동 평균을 추적하는 그룹을 만듭니다.

  1. h1과 l1으로 구성된 상향 추적 이동 평균 시스템。h1은 최고 가격의 간단한 이동 평균이며, 시장의 추세를 나타냅니다. h1은 ATR 값을 빼고 구성된 하향 레일이다。 가격 상위 H1을 통과할 때 여러 신호를 생성하고; 가격 하위 L1을 통과할 때 평점 신호를 생성한다。

  2. h2와 l2로 구성된 하향 추적 이동 평균 시스템. h2는 최저 가격의 간단한 이동 평균으로 시장 추세를 나타냅니다. l2는 h2 더 ATR 값으로 구성된 상반경이다. 가격이 아래로 h2를 통과하면 공백 신호가 발생하고, 가격이 위로 l2를 통과하면 평점 신호가 발생한다.

이중 레일 시스템을 사용하면 트렌드 전환점을 더 정확하게 판단하고 일부 노이즈 거래를 필터링 할 수 있습니다. 동시에, ATR 값은 중지 손실 및 중지 수준을 설정하여 각 거래의 위험 / 이익 비율을 제어합니다.

우위 분석

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

  1. 트렌드 전환점을 식별하기 위해 듀얼 레일 시스템을 사용하여 노이즈를 필터링합니다.
  2. ATR은 동적으로 변동률을 추적하여 단 단위 손실을 효과적으로 제어할 수 있다.
  3. 전략 논리는 간단하고 명확하며, 이해하기 쉬운 구현, 초보자 학습에 적합하다.
  4. 다양한 시장 환경에 적응할 수 있는 유연한 변수 조정.

위험 분석

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

  1. 이중 경로 돌파는 신호를 생성할 수 있으며, 트렌드의 초기 단계에 대한 기회를 충분히 잡을 수 없습니다.
  2. 이동 평균을 추적하는 것은 곡선 모양의 경향을 식별하는 능력이 약하다.
  3. 거래 비용의 영향은 고려되지 않습니다.

대책:

  1. 이동 평균 주기를 적절히 줄여서 신호를 더 민감하게 만듭니다.
  2. MACD와 같은 다른 지표와 결합하여 트렌드 유형을 판단하고, 흔들림 영역에서 높은 주파수 거래를 피하십시오.
  3. 포지션 규모를 조정하고 거래 빈도를 낮추십시오.

최적화 방향

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

  1. 기계 학습 알고리즘을 사용하여 자동으로 최적화 된 매개 변수를 사용하여 시장 환경에 적응하십시오.
  2. 거래량 지표와 함께 가짜 돌파구를 피하십시오.
  3. 포지션 크기를 트렌드 강도에 따라 미세하게 조정하는 규칙이 추가되었습니다.
  4. 트레일러 스톱 (trailer stop) 을 이용한 손해 차단 메커니즘을 최적화한다.

요약하다

이 전략은 전체적으로 간단하고 실용적인 트렌드 추적 전략으로, 핵심 아이디어는 쌍로 필터링과 ATR 동적 스톱로스를 통해 트렌드 전환을 식별하고 단편 손실을 제한하는 것입니다. 실제 가치는 있지만, 또한 최적화 할 여지가 있습니다. 파라미터를 조정하여 다른 지표와 결합하여 더 나은 효과를 얻을 수 있습니다.

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

//@version=4
strategy("I Like Winners And Love Loosers!", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

highest_length = input(200, type=input.integer, minval=1, title="Highest Length")
highest_average = input(10, type=input.integer, minval=1, title="Highest Average Length")

lowest_length = input(200, type=input.integer, minval=1, title="Lowest Length")
lowest_average = input(10, type=input.integer, minval=1, title="Lowest Average Length")

atr_length = input(14, type=input.integer, minval=1, title="ATR Length")
atr_multiplier = input(2, type=input.integer, minval=1, title="ATR Multiplier")
a = atr(atr_length) * atr_multiplier

h1 = sma(highest(high, highest_length), highest_average)
l1 = h1 - a

h2 = sma(lowest(low, lowest_length), lowest_average)
l2 = h2 + a

buy1_signal = crossover(close, h1)
sell1_signal = crossunder(close, l1)
strategy.entry("Buy", strategy.long, when=buy1_signal)
strategy.close("Buy", when=sell1_signal)

buy2_signal = crossunder(close, h2)
sell2_signal = crossover(close, l2)
strategy.entry("Sell", strategy.short, when=buy2_signal)
strategy.close("Sell", when=sell2_signal)

y1 = plot(h1, title="H1", color=color.green, transp=50, linewidth=2)
y2 = plot(l1, title="L1", color=color.red, transp=50, linewidth=2)
y3 = plot(h2, title="H2", color=color.green, transp=50, linewidth=2)
y4 = plot(l2, title="L2", color=color.red, transp=50, linewidth=2)

fill(y1,y2,color=color.green)
fill(y3,y4,color=color.red)