이중 기하급수적 이동 평균 교차에 기초한 양적 전략

저자:차오장, 날짜: 2023-09-14 19:51:37
태그:

이 문서에서는 이중 EMA 크로스오버를 기반으로 한 양적 거래 전략을 상세히 설명합니다. 빠른 EMA와 느린 EMA를 설정하고 교차 할 때 신호를 생성합니다.

I. 전략 논리

이 전략의 핵심은 서로 다른 매개 변수, 한 가지 빠르고 느린 두 개의 EMA를 설정하고, 크로스 오버 관계를 기반으로 구매 및 판매 신호를 생성하는 것입니다. 구체적인 논리는 다음과 같습니다.

  1. 단기 EMA (예를 들어 29기) 를 설정하여 단기 트렌드를 나타냅니다.

  2. 장기 트렌드를 표현하기 위해 장기 EMA (예를 들어 86 기간) 를 설정합니다.

  3. 짧은 EMA가 긴 EMA를 넘어서면 길게, 밑으로 넘어가면 짧게

  4. 현재는 엔트리 로직만 정의되어 있으며, 스톱 로스나 영업이익은 없습니다.

  5. 거래 고정 포지션 크기

빠른 EMA를 사용하여 단기 움직임에 반응하고 느린 EMA를 사용하여 장기 트렌드를 추적함으로써 크로스오버는 가격 변화의 핵심 방향을 포착하는 신호를 생성합니다.

II. 전략의 장점

이 전략의 가장 큰 장점은 단순함과 구현의 편리함입니다. EMA는 계산이 간단하며 크로스오버 신호는 시각적으로 명확합니다.

둘째, 빠른 EMA와 느린 EMA는 동시에 단기 및 장기적인 트렌드를 추적하기 위해 상호 보완됩니다. 빠른 EMA는 민첩하게 움직이고 느린 EMA는 소음을 필터합니다.

마지막으로, 고정 위치 크기는 또한 최적화 어려움을 줄입니다.

III. 잠재적인 약점

실행이 쉽지만, 라이브 트레이딩에서는 다음과 같은 위험을 고려해야 합니다.

첫째, EMA 크로스오버는 지연이 있고 최적의 입점도 놓칠 수 있습니다.

둘째, 스톱 로즈가 없다는 것은 손실 트레이드를 통제할 수 없다는 것을 의미합니다.

마지막으로, 이윤을 취득할 수 있는 수준이 없기 때문에 이윤 잠재력을 관리하는 것도 어렵다.

추가적인 출구 논리가 추가되어야 합니다. 스톱 로스 및 영업 조건으로요.

IV. 요약

요약하자면, 이 기사는 이중 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)

더 많은