리소스 로딩... 로딩...

다수 지수적 이동 평균 거래 전략

저자:차오장, 날짜: 2024-03-11 16:17:20
태그:

img

전반적인 설명

이 전략은 시장의 잠재적 진입점과 출구점을 식별하기 위해 여러 가지 기하급수적 이동 평균 (EMA) 을 결합합니다. 다른 기간과 EMA의 동향을 비교함으로써 현재 시장 동향을 결정하고 트렌드 형성의 시작에서 거래를 시작하고 트렌드 끝의 시작에서 포지션을 닫습니다.

전략 원칙

이 전략은 핵심 지표로 다른 기간을 가진 4개의 EMA를 사용한다. 즉, 극단기 EMA (8개의 디폴트 기간), 단기 EMA (13개의 디폴트 기간), 중기 EMA (21개의 디폴트 기간), 장기 EMA (55개의 디폴트 기간) 이다. 장기 EMA가 다른 3개의 EMA보다 낮을 때, 현재 시장이 상승 추세의 시작에 있을 수 있다고 판단되며, 전략은 긴 포지션을 개설한다. 장기 EMA가 다른 3개의 EMA보다 높을 때, 현재 시장이 하락 추세의 시작에 있을 수 있다고 판단되며, 전략은 모든 긴 포지션을 폐쇄한다. 전략은 신생 추세를 포착하기 위한 장기 및 단기 EMA 조정의 이 조합에 의해 트렌드 전환점을 식별한다.

단순 이동 평균 (SMA) 과 비교하면 EMA는 최근 가격에 더 중점을 두기 때문에 트렌드가 더 민감하고 가격 변화에 더 빠르게 반응 할 수 있습니다. 다른 기간과 EMA의 크로스오버는 다른 시간 스케일의 트렌드의 강도를 반영합니다. 장기 EMA는 가장 안정적이며 중요한 시장 추세를 나타냅니다. 중장기 EMA는 상대적으로 민감하며 단기 및 중기 시장 트렌드를 반영합니다. 그들은 함께이 전략의 핵심 논리를 구성합니다.

이점 분석

  1. 폭넓은 적용 가능성: 이 전략은 가격 자체의 EMA 지표에 기반하고 있으며 다양한 선물, 외환, 주류 암호화폐 등 유동성이 좋고 상대적으로 부드러운 경향을 가진 대부분의 품종에 적용됩니다.

  2. 트렌드 추적: 트렌드를 결정하기 위해 다른 기간에 있는 EMA의 위치 관계를 비교함으로써, 트렌드 형성의 시작을 어느 정도 파악하고 트렌드를 추적할 수 있다.

  3. 유연한 매개 변수: EMA의 기간 매개 변수는 품종의 특성, 투자 지평 등에 따라 유연하게 조정될 수 있으며, 어느 정도의 적응성을 가지고 있습니다.

  4. 명확한 논리: 전략은 긴 EMA와 짧은 EMA의 간단한 조합을 기반으로 거래 신호를 생성하고 논리는 명확하고 이해하기 쉽고 실행됩니다.

위험 분석

  1. EMA 지연: EMA는 본질적으로 트렌드 추적 지표이며 특정 지연을 가지고 있으며 격동 시장에서 더 많은 잘못된 신호를 생성 할 수 있습니다.

  2. 매개 변수 민감성: EMA 기간 매개 변수의 선택은 전략 성과에 상당한 영향을 미치며 최적화된 매개 변수는 샘플 외 데이터에서 좋은 성과를 유지할 수 없습니다.

  3. 필터링 부족: 이 전략은 거래 신호의 추가 필터링이 부족하며 생성된 모든 신호는 거래 될 것이며, 이는 일부 저품질 거래로 이어질 수 있습니다.

  4. 고정 포지션: 현재 전략은 매번 고정 1 유닛 포지션을 개설하고 있으며, 위험에 기반한 동적 포지션 통제가 부족하며, 위험 관리는 충분히 완벽하지 않습니다.

최적화 방향

  1. 트렌드 필터링을 도입합니다. EMA 신호를 기반으로 ATR 및 ADX와 같은 트렌드 강도 필터링 지표를 추가하여 약한 트렌드 및 격동 기간의 신호를 필터링합니다.

  2. 변동성 필터링을 도입: 트렌드 필터링을 기반으로 높은 변동성으로 인해 발생할 수 있는 저품질 신호를 필터링하기 위해 볼링거 밴드 너비와 같은 변동성 필터링을 추가로 도입할 수 있습니다.

  3. 스톱 로스를 최적화: 현재 전략에는 명확한 스톱 로스 논리가 없습니다. 트렌드 및 변동성 필터링을 도입한 후 단일 거래의 최대 손실을 제어하기 위해 ATR 또는 비율에 기반한 동적 스톱 로스를 추가 할 수 있습니다.

  4. 역동적 위치: 다양한 변동성, 계정 가치의 비율 등에 따라 전략에 의해 열리는 포지션의 수는 더 높은 절대 수익을 추구하면서 위험을 줄이기 위해 역동적으로 제어 할 수 있습니다.

  5. 매개 변수 최적화: 다른 품종과 다른 기간에 대해 EMA의 최적 매개 변수는 다를 수 있으며 전략의 적용 가능성을 향상시키기 위해 매개 변수 최적화는 품종의 특성에 따라 별도로 수행해야합니다.

요약

이 전략은 트렌드 형성의 시작을 파악하기 위해 다른 기간과 4 개의 EMA의 긴 및 짧은 배열 조합을 비교하여 트렌드 전환점을 식별합니다. 아이디어는 간단하고 명확합니다. 이 전략의 장점은 광범위한 적용 가능성, 명확한 논리 및 유연한 매개 변수이며 트렌드를 잘 추적 할 수 있습니다. 그러나 동시에 EMA 지표의 고유 한 지연과 매개 변수 민감성, 필터링 부족 및 고정 위치와 같은 문제가 있습니다. 미래에, 이 전략의 견고성과 수익성은 트렌드 및 변동성 필터링을 도입하고 스톱 로스, 동적 위치 및 매개 변수 최적화를 최적화하여 더 완전하고 신뢰할 수 있도록하는 측면에서 향상 될 수 있습니다.


/*backtest
start: 2023-03-05 00:00:00
end: 2024-03-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © n1ghthawk

//@version=5
strategy("donmo's 4ema", overlay=true, margin_long=100, margin_short=100)

float long = na
float short = na

lowestEMAPeriodInput = input.int(8, "Lowest EMA")
lowEMAPeriodInput = input.int(13, "Low EMA")
medEMAPeriodInput = input.int(21, "Med EMA")
highEMAPeriodInput = input.int(55, "High EMA")

lowestEMA = ta.ema(close, lowestEMAPeriodInput)
lowEMA = ta.ema(close, lowEMAPeriodInput)
medEMA = ta.ema(close, medEMAPeriodInput)
highEMA = ta.ema(close, highEMAPeriodInput)


emaLongCondition = highEMA<medEMA and highEMA<lowEMA and highEMA<lowestEMA
emaShortCondition = highEMA>medEMA and highEMA>lowEMA and highEMA>lowestEMA

longCondition = ta.change(emaLongCondition)
shortCondition = ta.change(emaShortCondition)

notInTrade = strategy.position_size <= 0
if longCondition and emaLongCondition and notInTrade
    long:=high
    strategy.entry("EL", strategy.long)

if shortCondition and emaShortCondition
    short:=low
    strategy.close("EL")


plot(long+3,title = 'long', color = color.green, linewidth = 4, style = plot.style_cross)
plot(short-3,title = 'short', color = color.red, linewidth = 4, style = plot.style_cross)

plot(lowestEMA, title = "lowestEMA", color=color.blue)
plot(lowEMA, title = "lowEMA", color=color.green)
plot(medEMA, title = "medEMA", color=color.orange)
plot(highEMA, title = "highEMA", color=color.red)

더 많은