이동평균에 기초한 전략을 따르는 경향

저자:차오장, 날짜: 2024-01-22 17:26:04
태그:

img

전반적인 설명

전략 논리

빠른 EMA가 아래에서 느린 EMA를 넘을 때 시장이 상승 추세에 들어서고 구매 신호를 생성한다는 것을 나타냅니다. 빠른 EMA가 위에서 느린 EMA를 넘을 때 하락 추세의 시작을 표시하고 판매 신호를 생성합니다.

이점 분석

이 전략의 장점은 다음과 같습니다.

  1. 트렌드 방향성을 명확하게 결정하기 위해 이중 EMA 접근 방식을 채택합니다.
  2. 중장기 동향과 단기 조정을 추적할 수 있습니다.
  3. 단순하고 명확한 논리, 이해하기 쉽고 실행하기 쉬운, 초보자에게 적합합니다.

위험 분석

또한 다음과 같은 위험 요소가 있습니다.

  1. 가격이 옆으로 움직일 때 잘못된 신호에 취약합니다. EMA 매개 변수 조정으로 완화 될 수 있습니다.
  2. MA 시스템에 내재된 지연, 가격 반전 포인트를 놓칠 수 있습니다. 다른 지표와 최적화 할 수 있습니다.

최적화 방향

몇 가지 최적화 방향:

  1. EMA 기간을 최적화하여 수익성을 향상시킵니다.
  2. 가짜 브레이크오웃을 피하기 위해 거래량과 같은 다른 지표를 추가합니다.
  3. 단일 트레이드에서 하락을 제한하기 위해 스톱 로스 전략을 추가합니다.
  4. 더 넓은 적응력을 위해 매개 변수 최적화를 도입합니다.

결론

이 전략은 시장 트렌드를 결정하기 위해 빠르고 느린 EMA 관계를 사용하여 이중 EMA 크로스오버를 기반으로 한 거래 시스템을 구축합니다. 신호 생성은 간단하고 명확합니다. 약간의 소음을 필터하고 중장기 트렌드 거래에 적합합니다. 멀티 지표 최적화 및 위험 통제를 통해 보편성과 효율성을 향상시킬 여지가 있습니다.


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

//@version=2
strategy("EMA Strategy v2", shorttitle = "EMA Strategy v2", overlay=true, pyramiding = 3,default_qty_type = strategy.percent_of_equity, default_qty_value = 10)


// === Inputs ===
// short ma
maFastSource   = input(defval = close, title = "Fast MA Source")
maFastLength   = input(defval = 30, title = "Fast MA Period", minval = 1)

// long ma
maSlowSource   = input(defval = close, title = "Slow MA Source")
maSlowLength   = input(defval = 100, title = "Slow MA Period", minval = 1)

// invert trade direction
tradeInvert = input(defval = false, title = "Invert Trade Direction?")
// risk management
useStop     = input(defval = true, title = "Use Initial Stop Loss?")
slPoints    = input(defval = 0, title = "Initial Stop Loss Points", minval = 1)
useTS       = input(defval = true, title = "Use Trailing Stop?")
tslPoints   = input(defval = 0, title = "Trail Points", minval = 1)
useTSO      = input(defval = false, title = "Use Offset For Trailing Stop?")
tslOffset   = input(defval = 0, title = "Trail Offset Points", minval = 1)

// === Vars and Series ===
fastMA = ema(maFastSource, maFastLength)
slowMA = ema(maSlowSource, maSlowLength)

plot(fastMA, color=blue)
plot(slowMA, color=purple)

goLong() => crossover(fastMA, slowMA)
killLong() => crossunder(fastMA, slowMA)
strategy.entry("Buy", strategy.long, when = goLong())
strategy.close("Buy", when = killLong())

// Shorting if using
goShort() => crossunder (fastMA, slowMA)
killShort() => crossover(fastMA, slowMA)
//strategy.entry("Sell", strategy.short, when = goShort())
//strategy.close("Sell", when = killShort())

if (useStop)
    strategy.exit("XLS", from_entry ="Buy", stop = strategy.position_avg_price / 1.08 )
    strategy.exit("XSS", from_entry ="Sell", stop = strategy.position_avg_price * 1.58)

더 많은