이동 평균 크로스오버 거래 전략

저자:차오장, 날짜: 2024-01-24 11:48:29
태그:

img

전반적인 설명

이동 평균 크로스오버 거래 전략은 빠른 EMA (fastLength) 와 느린 EMA (slowLength) 라인의 크로스오버를 계산하여 구매 및 판매 신호를 생성합니다. 빠른 라인이 느린 라인의 위를 넘을 때 구매 신호가 생성됩니다. 빠른 라인이 느린 라인을 넘을 때 판매 신호가 생성됩니다. 이 전략은 간단하고 실용적이며 중장기 및 단기 거래에 적합합니다.

전략 원칙

이 전략은 두 개의 이동 평균 라인, 빠른 라인 및 느린 라인을 사용합니다. 빠른 라인 매개 변수 EMAfastLength는 9 일 라인에 기본 설정되며 느린 라인 매개 변수 EMAslowLength는 26 일 라인에 기본 설정됩니다. 시장 구매 및 판매 신호를 결정하기 위해 두 EMA 라인의 교차를 계산하십시오:

  1. 빠른 선이 느린 선을 통해 상향으로 돌리면 구매 신호 enterLong() 가 생성됩니다.
  2. 빠른 선이 느린 선을 통해 아래로 넘어갈 때 판매 신호 enterShort ((() 가 생성됩니다.

특정 거래 신호와 전략 규칙은 다음과 같습니다.

  1. 빠른 선이 느린 선 위에 넘어가면, 길게 가세요. 빠른 선이 느린 선 아래로 넘어가면, 가까이 가세요.
  2. 장기적으로 수익을 취하는 것은 가격의 타겟 퍼센트리 (디폴트 0.15%) 이며, 이윤이 15%에 도달하면 포지션을 닫는 것입니다.
  3. 장기간에 대한 스톱 로스는 가격의 스톱 로스 퍼센트 (디폴트 0.20%) 로 손실이 20%에 도달하면 포지션을 닫습니다.
  4. 짧은 포지션은 같은 방식으로 작동합니다.

그래서 이 전략은 두 이동평균선의 황금 십자와 죽은 십자 위에 기반을 두고 거래합니다.

이점 분석

  1. 전략은 간단하고 이해하기 쉽습니다.
  2. 이동 평균의 적용은 시장 소음을 필터링하고 거래 신호를 더 정확하게 만듭니다.
  3. 거래 규칙은 명확합니다. 확실한 수익과 스톱 로스로요.
  4. 테스트 매개 변수는 다양한 시장 조건에 적응하기 위해 유연하게 조정할 수 있습니다.

위험 분석

  1. 이동 평균 자체는 지연을 가지고 있으며, 이는 단기 가격 변화를 놓칠 수 있으며, 부정확한 구매 및 판매 지점을 초래할 수 있습니다.
  2. 다른 사이클 이동 평균 매개 변수는 잘못된 신호를 생성하고 손실을 가져올 수 있습니다.
  3. 몇 가지 매개 변수에만 의존하여, 이 전략은 최고의 매개 변수 조합을 찾기 위해 높은 하이퍼 매개 변수 최적화 요구 사항을 가지고 있습니다.
  4. 특정 주요 추세에서는 이 전략이 실패할 가능성이 있습니다.

위험을 해결하기 위해 최적화 할 수있는 매개 변수에는 이동 평균 사이클, 거래 다양성, 수익 취득 및 중지 손실 비율 등이 포함됩니다. 위험을 줄이기 위해 광범위한 테스트가 필요합니다.

최적화 방향

이 전략의 이동 평균 크로스오버 아이디어는 간단하고 실용적입니다. 다음 방법으로 최적화 될 수 있습니다.

  1. 이동 평균 유형 변경: EMA 외에도 SMA, LWMA, HMA 및 다른 유형을 테스트하십시오.
  2. 다른 지표를 추가: RSI, MACD 및 다른 지표와 결합합니다.
  3. 매개 변수 최적화: 가장 좋은 매개 변수 조합을 찾기 위해 EMA의 두 사이클 매개 변수를 자동으로 최적화합니다.
  4. 트렌드 필터링: 주요 트렌드 상황에 따라 선택적으로 거래합니다.
  5. 이윤 취득 및 스톱 손실 최적화: 고정 비율의 이윤 취득 및 스톱 손실을 개선하여 더 실용화하십시오.

이러한 최적화 테스트를 통해 전략의 실질적 효과와 안정성이 크게 향상될 수 있습니다.

요약

이동 평균 크로스오버 전략의 아이디어는 간단하지만 실제 적용에는 지속적인 최적화가 필요합니다. 이 전략은 거래 신호와 기본 거래 규칙을 생성하는 논리를 제공합니다. 이러한 기초에 따라 활용 가능한 양적 전략이 될 수 있습니다. 이동 평균의 응용은 또한 혁신하고 개선 할 수있는 전략에 대한 아이디어를 제공합니다.


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

//@version=4
strategy("EMA Cross by MarketAlpha", overlay=true)
EMAfastLength = input(defval = 9, minval = 2)
EMAslowLength = input(defval = 26, minval = 2)
Targetpercentage = input(defval = 0.15, title = "Profit Target in percentage", minval = 0.05)
StopLosspercentage = input(defval = 0.20, title = "Stop Loss in percentage", minval = 0.05)
profitpoints = close*Targetpercentage
stoplosspoints = close*StopLosspercentage
price = close

FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2000)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"

emafast = ema(price, EMAfastLength)
emaslow = sma(price, EMAslowLength)
plot(emafast,color=green)
plot(emaslow,color=red)

enterLong() => crossover(emafast, emaslow)
strategy.entry(id = "MarketAlpha Long", long = true, when = window() and enterLong())
strategy.exit("Exit Long", from_entry = "MarketAlpha Long", profit = profitpoints,loss = stoplosspoints)

enterShort() => crossunder(emafast, emaslow)
strategy.entry(id = "MarketAlpha Short", long = false, when = window() and enterShort())
strategy.exit("Exit Short", from_entry = "MarketAlpha Short", profit = profitpoints,loss = stoplosspoints)



더 많은