MA, SMA 이중 이동평균 교차 전략

MA SMA
생성 날짜: 2024-05-28 10:53:02 마지막으로 수정됨: 2024-05-28 10:53:02
복사: 0 클릭수: 586
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

MA, SMA 이중 이동평균 교차 전략

개요

이 전략은 두 개의 다른 주기의 이동 평균 ((MA) 을 사용하여 거래 신호를 생성한다. 단기 MA가 아래에서 위쪽으로 장기 MA를 통과하면 구매 신호를 생성하고, 단기 MA가 위쪽으로 장기 MA를 통과하면 판매 신호를 생성한다. 이 전략의 주요 아이디어는 MA의 트렌드 추적 기능을 사용하여 MA를 통해 트렌드 전환을 포착하여 거래를 수행하는 것이다.

전략 원칙

  1. 두 개의 다른 주기의 이동 평균 ((MA) 을 계산합니다. 하나는 단기 MA이고 다른 하나는 장기 MA입니다.
  2. 단기MA가 아래에서 상향으로 장기MA를 가로질러 올라가는 것은 상승 추세가 형성될 수 있음을 나타내고, 구매 신호를 발생시킨다.
  3. 단기MA가 상향 하향으로 장기MA를 통과하면, 하향 트렌드가 형성될 수 있음을 나타내고, 판매 신호를 생성한다.
  4. 구매 및 판매 신호에 따라 거래하고, 구매 신호가 발생했을 때 더 많은 포지션을 열고, 판매 신호가 발생했을 때 빈 포지션을 열습니다.

전략적 이점

  1. 간단하고 이해하기 쉬운: 이 전략의 논리는 명확하고, 이해하기 쉽고, 실행하기 쉽다.
  2. 트렌드 추적: MA 교차를 통해 트렌드의 변화를 포착하여 다른 시장 추세에 더 잘 적응할 수 있습니다.
  3. 매개 변수 유연성: 전략의 성능을 최적화하기 위해 다양한 시장과 시간 주기에 따라 단기 및 장기 MA의 주기 매개 변수를 조정할 수 있습니다.

전략적 위험

  1. 흔들리는 시장: 흔들리는 시장에서, 빈번한 MA 교차는 많은 가짜 신호를 유발할 수 있으며, 이로 인해 더 많은 손실 거래가 발생할 수 있다.
  2. 트렌드 지연: MA는 지연된 지표이며, 따라서 트렌드 전환 초기에는 이 전략이 수익의 일부를 놓칠 수 있습니다.
  3. 변수 최적화: 다른 변수 설정은 전략 성능에 큰 영향을 미칩니다. 변수 최적화에는 많은 역사 데이터와 컴퓨팅 자원이 필요합니다.

전략 최적화 방향

  1. 트렌드 필터를 추가: MA 교차로 신호를 생성 한 후, 다른 트렌드 지표 (예를 들어 MACD, DMI 등) 를 사용하여 2차 확인을 할 수 있으며, 몇 가지 가짜 신호를 필터링 할 수 있습니다.
  2. 최적화 스톱 스톱 손실: 합리적인 스톱 스톱 손실을 설정하여 트렌드 지연의 경우 손실을 최소화하여 수익을 수 있습니다.
  3. 동적 변수 최적화: 상이한 시장 상태에 따라 MA 주기 변수를 동적으로 조정하여 현재 시장 특성에 맞게 한다.
  4. 다른 신호를 조합: MA 교차 신호를 다른 기술 지표 (RSI, 브린 밴드 등) 와 결합하여 더 신뢰할 수 있는 거래 신호를 형성한다.

요약하다

쌍평선 교차 전략은 두 개의 다른 주기 MA의 교차로 트렌드 전환을 포착하기 위해 사용되는 간단한 트렌드 추적 전략이다. 이 전략의 장점은 논리적으로 명확하고, 신호가 명확하며, 트렌드 시장에 적합하다. 그러나, 흔들리는 시장에서 이 전략은 더 많은 가짜 신호와 손실 거래를 일으킬 수 있다. 따라서 실제 응용에서는 트렌드 필터링, 스톱 로즈 최적화, 동적 요소 최적화 및 기타 신호와 결합하는 방법을 추가하여 전략의 성능을 개선하고, 그 적응성과 안정성을 향상시킬 수 있다.

전략 소스 코드
/*backtest
start: 2023-05-22 00:00:00
end: 2024-05-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

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

// Moving Averages Length Inputs
short_length = input.int(20, "Short MA Length")
long_length = input.int(50, "Long MA Length")

// Moving Averages
ma_short = ta.sma(close, short_length)
ma_long = ta.sma(close, long_length)

// Buy Condition (Moving Average Crossover)
buy_condition = ta.crossover(ma_short, ma_long)
plotshape(series=buy_condition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)

// Sell Condition (Moving Average Crossover)
sell_condition = ta.crossunder(ma_short, ma_long)
plotshape(series=sell_condition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)

// Strategy Entry and Exit
if (buy_condition)
    strategy.entry("Buy", strategy.long)

if (sell_condition)
    strategy.entry("Sell", strategy.short)

// Debug statements
if (buy_condition)
    label.new(x=bar_index, y=low, text="Buy Signal", color=color.green, style=label.style_label_up)

if (sell_condition)
    label.new(x=bar_index, y=high, text="Sell Signal", color=color.red, style=label.style_label_down)