EMA 이동평균 교차 전략


생성 날짜: 2023-11-10 15:05:22 마지막으로 수정됨: 2023-11-10 15:05:22
복사: 0 클릭수: 417
1
집중하다
1224
수행원

EMA 이동평균 교차 전략

개요

이 전략은 빠른 EMA 선과 느린 EMA 선의 교차를 구매 및 판매 신호로 사용하고 평행선 교차에 따라 자동 거래를 구현한다. 빠른 EMA 선은 밀착 가격 변동, 느린 EMA 선은 평평 가격 변동을 구현한다. 빠른 EMA 선이 하향 방향에서 느린 EMA 선을 통과하면 구매 신호가 발생하고 빠른 EMA 선이 상향 방향에서 느린 EMA 선을 넘어서는 경우 판매 신호가 발생한다. 이 전략은 유연하게 조정할 수 있으며, 빠른 EMA의 매개 변수를 조정하여 구매 및 판매 신호의 지점을 사용자 정의 할 수 있다.

전략 원칙

이 전략은 주로 빠른 EMA 라인과 느린 EMA 라인을 계산하고 두 평행선의 관계를 비교하여 거래 신호를 생성한다.

먼저, 입력 변수에서 빠른 EMA의 주기emaFast를 1으로 설정하여 빠른 EMA가 가격 변화를 밀착시킬 수 있다. 동시에 느린 EMA의 주기emaSlowBuy를 구매 신호를 생성하고, emaSlowSell를 판매 신호를 생성하기 위해 설정한다.

그 다음, 입력된 주기에 따라, 빠른 EMA와 느린 EMA를 계산한다. 빠른 EMA는 1의 고정 주기이며, 가격과 밀접한 관계를 유지한다. 느린 EMA는 가격 데이터를 평형화하기 위해 조정 가능한 파라미터이다.

다음으로, 빠른 EMA와 느린 EMA의 크기의 관계를 비교하여 교차 상황을 판단한다. 빠른 EMA가 아래쪽에서 느린 EMA를 통과하면 금색 포크가 발생하여 구매 조건을 충족한다. 빠른 EMA가 위쪽에서 느린 EMA를 무너뜨리면 사각지대가 발생하여 판매 조건을 충족한다.

마지막으로, 구매 및 판매 조건이 충족되면, 해당 상장 및 상장 지시 사항을 실행하여 거래를 완료하십시오. 동시에, 현재 시간이 재검토 시간 범위 내에 있는지 확인하여 날짜 범위를 초과하는 잘못된 거래를 피하십시오.

우위 분석

  • 평행선 교차를 이용한 매매지점 판단은 성숙하고 신뢰할 수 있는 기술적인 지표입니다.
  • 빠른 EMA 주기가 조정 가능하며, 시장의 변수에 따라 최적의 거래 기회를 찾을 수 있습니다.
  • “금叉買死叉賣”의 아이디어는 명확하고 이해하기 쉽다.
  • 다양한 EMA 파라미터를 사용하여 구매 및 판매를 유연하게 설정할 수 있으며 완전히 사용자 정의 된 거래 전략
  • 선택 가능한 상장만, 상장만 또는 양방향 거래, 다양한 시장 상황에 적응할 수 있는 유연성
  • 다양한 시간대에 대한 최적화된 테스트를 위해 재검토의 시간 범위를 설정할 수 있습니다.

위험 분석

  • 평균 EMA 교차는 지연성이 있으며 가격 변화의 가장 좋은 시점을 놓칠 수 있습니다.
  • 큰 변동성 시장에서 EMA 교차로에서 발생하는 신호가 빈번하게 발생하여 과도한 거래가 발생할 수 있습니다.
  • 최적의 EMA 조합을 찾기 위해 매개 변수를 반복적으로 테스트해야 합니다. 그렇지 않으면 많은 오류 신호가 발생합니다.
  • 1주기 빠른 EMA를 고정하여 시장의 갑작스러운 사건에서 잡음을 효과적으로 필터링 할 수 없습니다.
  • 가격 변동이 있는 시장을 효율적으로 다루지 못하면 불필요한 거래 신호가 많이 발생한다.

위험에 대해 다음과 같은 최적화 조치를 고려할 수 있습니다.

  1. 다른 지표와 결합하여 EMA 교차 신호를 필터링하여 잘못된 신호를 방지합니다.

  2. 시장의 변동에 따라 EMA 파라미터를 조정하여 거래 빈도를 낮추는 것

  3. 더 많은 상쇄 및 차단 고려, 위험 통제

  4. 빠른 EMA의 주기를 최적화하여 특정 시장 조건에 더 적합한 매개 변수를 적용합니다.

  5. 트렌드 판단을 높이고, 불안한 시장의 과도한 거래를 피하십시오.

최적화 방향

이 전략은 다음과 같은 방향으로 더 개선될 수 있습니다.

  1. EMA의 파라미터 설정을 최적화하고, 다양한 주기 조합을 테스트하여 최적의 파라미터를 찾습니다.

다양한 emaFast 및 emaSlow 파라미터를 거쳐, 단계적 최적화 또는 무작위적 최적화 방법을 사용하여, 역사 데이터 재검토에서 가장 잘하는 파라미터 조합을 찾을 수 있다.

  1. 다른 지표와 함께 신호 필터링 검증

예를 들어 MACD, KDJ, 브린 밴드 등의 지표가 결합되어 EMA 교차가 잘못된 신호를 발생하지 않도록 할 수 있다.

  1. 트렌드에 대한 판단을 높여라

평균 실제 파도와 같은 지표들을 계산하여 강하고 약한 흐름을 판단하고, 흔들리는 시장에 빠지지 않도록하십시오.

  1. 제휴 전략의 최적화

손실 위험을 통제하기 위한 최적의 스톱포트를 연구하고, 수익을 극대화하기 위한 합리적인 스톱포트를 결정한다.

  1. 다른 EMA 조합을 테스트합니다.

빠른 EMA 조합 뿐만 아니라, 더 나은 변수를 찾기 위해 쌍 EMA, 삼 EMA 또는 다중 EMA 조합을 테스트 할 수 있습니다.

  1. 다른 시장주기에 맞춰 변수를 조정합니다.

유동성이 강한 시장에서는 EMA 주기를 적절히 가속시킬 수 있고, 흔들리는 시장에서는 EMA 주기를 느리게 할 수 있다.

요약하다

이 EMA 교차 전략의 전체적인 생각은 명확하고 이해하기 쉽으며,成熟한 기술 지표를 사용하여 매매 시점을 판단한다. 전략은 사용자 정의성이 강하며, EMA 매개 변수를 조정하여 최적화하여 다양한 시장 환경에 맞게 거래 전략을 수립할 수 있다. 그러나 EMA 신호는 지연성이 있으며, 최적의 매개 변수 조합을 찾기 위해 반복 테스트가 필요합니다. 또한, 위험에 맞게 최적화하고, 다른 지표와 결합하여 신호 검증을 수행하고, 손해 중지 방식을 최적화하여 회수 철수를 줄이고 수익성을 향상시킵니다.

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

//@version=4
strategy(
     "EMA Cross Strategy with Custom Buy/Sell Conditions",
     overlay=true
     )

// INPUT:

// Options to enter fast Exponential Moving Average (EMA) value
emaFast = 1

// Options to enter slow EMAs for buy and sell signals
slowEMABuy = input(title="Slow EMA for Buy Signals",  defval=20, minval=1, maxval=9999)
slowEMASell = input(title="Slow EMA for Sell Signals",  defval=30, minval=1, maxval=9999)

// Option to select trade directions
tradeDirection = input(title="Trade Direction", options=["Long", "Short", "Both"], defval="Both")

// Options that configure the backtest date range
startDate = input(title="Start Date", type=input.time, defval=timestamp("01 Jan 2018 00:00"))
endDate = input(title="End Date", type=input.time, defval=timestamp("31 Dec 2025 23:59"))


// CALCULATIONS:

// Use a fixed fast EMA of 1 and calculate slow EMAs for buy and sell signals
fastEMA = ema(close, emaFast)
slowEMABuyValue = ema(close, slowEMABuy)
slowEMASellValue = ema(close, slowEMASell)


// PLOT:

// Draw the EMA lines on the chart
plot(series=fastEMA, color=color.orange, linewidth=2)
plot(series=slowEMABuyValue, color=color.blue, linewidth=2, title="Slow EMA for Buy Signals")
plot(series=slowEMASellValue, color=color.red, linewidth=2, title="Slow EMA for Sell Signals")


// CONDITIONS:

// Check if the close time of the current bar falls inside the date range
inDateRange = true

// Translate input into trading conditions for buy and sell signals
buyCondition = crossunder(slowEMABuyValue, fastEMA)
sellCondition = crossover(slowEMASellValue, fastEMA)

// Translate input into overall trading conditions
longOK  = (tradeDirection == "Long") or (tradeDirection == "Both")
shortOK = (tradeDirection == "Short") or (tradeDirection == "Both")


// ORDERS:

// Submit entry (or reverse) orders based on buy and sell conditions
if (buyCondition and inDateRange)
    strategy.entry("Buy", strategy.long)

if (sellCondition and inDateRange)
    strategy.close("Buy")

// Submit exit orders based on opposite trade conditions
if (strategy.position_size > 0 and sellCondition)
    strategy.close("Sell")
if (strategy.position_size < 0 and buyCondition)
    strategy.close("Sell")