이동평균 골든크로스와 데드크로스를 기반으로 한 트레이딩 전략


생성 날짜: 2024-01-24 11:48:29 마지막으로 수정됨: 2024-01-24 11:48:29
복사: 1 클릭수: 696
avatar of ChaoZhang ChaoZhang
1
집중하다
1664
수행원

이동평균 골든크로스와 데드크로스를 기반으로 한 트레이딩 전략

개요

이동 평균 금줄기 사다리 거래 전략은 빠른 라인 EMA ((fastLength) 와 느린 라인 EMA ((slowLength) 의 교차를 계산하여 구매 및 판매 신호를 생성한다. 빠른 라인 상에서 느린 라인을 통과할 때 구매 신호를 생성한다. 빠른 라인 아래에서 느린 라인을 통과할 때 판매 신호를 생성한다. 이 전략은 간단하고 실용적이며 중간의 짧은 라인 거래에 적합하다.

전략 원칙

이 전략은 두 개의 이동 평균, 즉, 빠른 선과 느린 선을 사용한다. 빠른 선의 파라미터인 EMAfastLength는 9일 선을 기본으로 하고, 느린 선의 파라미터인 EMAAslowLength는 26일 선을 기본으로 한다. 두 개의 EMA 선의 교차를 계산하여 시장의 매매 신호를 판단한다:

  1. 빠른 라인이 느린 라인을 아래에서 위로 돌파 할 때, 구매 신호가 생성됩니다.
  2. 빠른 라인이 상향에서 아래로 내려가 느린 라인을 깨면, 판매 신호가 생성됩니다.

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

  1. 빠른 선에서 느린 선을 통과할 때, 더 많은 입구를 한다. 빠른 선 아래의 느린 선을 통과할 때, 평상시 퇴장을 한다.
  2. 더 많은 스톱은 가격의 Targetpercentage (기본 0.15%), 즉 상승이 15%에 도달하면 평점으로 나가십시오.
  3. 더 많은 손실을 하는 것은 가격의 StopLosspercentage (기본 0.20%) 이며, 하락이 20%에 도달하면 평점 손실이다.

그래서 이 전략은 두 개의 이동 평균이 발생했을 때 거래하는 전략입니다.

우위 분석

  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)