이중 지수 이동 평균 교차의 양적 전략


생성 날짜: 2023-09-14 19:51:37 마지막으로 수정됨: 2023-09-14 19:51:37
복사: 0 클릭수: 429
1
집중하다
1217
수행원

이 문서에서는 쌍 지수 이동 평균의 교차에 대한 정량화 전략을 자세히 설명합니다. 이 전략은 두 개의 EMA를 빠르게 설정하여 교차에 따라 거래 신호를 형성합니다.

1 전략

이 전략의 핵심은 두 개의 다른 파라미터의 EMA를 설정하는 것으로, 빨리 또는 천천히, 그들의 교차 관계에 따라 구매 및 판매 신호를 생성한다. 구체적인 논리는 다음과 같다:

  1. 단기 트렌드를 나타내는 작은 주기 EMA (예: 29주기) 를 설정합니다.

  2. 큰 주기적 EMA (예: 86주기) 를 설정하여 장기적 추세를 나타냅니다.

  3. 단기 EMA 위에 장기 EMA를 착용할 때, 더 많은 일을; 단기 EMA 아래 장기 EMA를 착용할 때, 공백을;

  4. 현재 전략은 오프 포지션 논리만 설정하고, 스톱 스톱 논리만 설정하지 않습니다.

  5. 고정 지분으로 포지션을 개설한다.

빠른 EMA는 단기 변동에 반응하고, 느린 EMA는 장기 동향을 추적하며, 둘은 교차하여 거래 신호를 형성하여 가격 변화의 핵심 방향을 점진적으로 잡을 수 있습니다.

2 전략적 장점

이 전략의 가장 큰 장점은 조작이 간단하고 실행이 쉽다는 것이다. EMA 지표는 계산하기 쉽고, 교차 신호는 직접적으로 보인다.

둘째, 빠른 느린 EMA 협동은 동시에 짧은 긴 주기 트렌드를 추적할 수 있다. 빠른 EMA는 변화에 능동적이고, 느린 EMA는 소음을 필터링한다.

마지막으로, 고정 포지션 관리는 전략의 변수 최적화를 덜 어렵게 한다.

  1. 잠재적인 위험

이 전략은 실행하기 쉽지만, 실장에서는 다음과 같은 위험도 주의해야 합니다.

첫 번째, EMA 크로스 (EMA Crossing) 는 다소 뒤쳐져 있으며, 가장 좋은 입점 지점을 놓칠 수 있습니다.

두 번째, 단 한 번의 손실을 통제할 수 없는 단 한 번의 손실을 통제할 수 없는 단 한 번의 손실이 없습니다.

마지막으로, 정지점 설정이 없기 때문에 수익 공간을 통제하기가 어렵습니다.

이것은 추가로 Exit 논리를 추가하고 Stop Loss Stop 조건을 설정하는 것을 요구합니다.

네 가지 내용

이 글은 쌍 EMA 교차의 양적 거래 전략에 대해 자세히 소개한다. 그것은 빠른 EMA와 느린 EMA의 조합을 사용하여 트렌드 방향을 판단하여 거래 신호를 형성한다. 전략은 실행하기 쉽지만, 또한 파라미터 최적화 난이도가 높지 않은 문제가 있다.

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

//@version=3
strategy("EMA Cross Strategy", overlay=true, initial_capital=100, currency="USD", default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075)

small_ema = input(29, title="Small EMA")
long_ema = input(86, title="Long EMA")

ema1 = ema(close, small_ema)
ema2 = ema(close, long_ema)

longCondition = ema1 > ema2
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = ema1 < ema2
if (shortCondition)
    strategy.entry("Short", strategy.short)
    
//strategy.close("Long", when=close < ema1)
//strategy.close("Short", when=close > ema1)
    
x1 = plot(ema(close, small_ema), title="EMA 1", color=longCondition?green:shortCondition?red:blue, transp=0, linewidth=0)
x2 = plot(ema(close, long_ema), title="EMA 2", color=longCondition?green:shortCondition?red:blue, transp=0, linewidth=0)

//bgcolor(longCondition?green:shortCondition?red:blue, transp=75)

fill(x1,x2,color=longCondition?green:shortCondition?red:blue)