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

EMA/SMA 다중 지표 포괄적 동향 전략

저자:차오장, 날짜: 2024-06-28 15:00:20
태그:EMASMARSI스톡CCIMACD

img

전반적인 설명

이 전략은 여러 가지 기술 지표에 기반한 종합적인 트렌드 다음 시스템으로, 주로 1시간 시간 프레임에 설계되었습니다. 그것은 이동 평균, 추진력 지표 및 오시레이터를 결합하여 현재 가격에 대한 여러 지표의 위치를 계산하여 시장 추세를 평가합니다. 전략의 핵심 아이디어는 대부분의 지표가 상승 신호를 표시 할 때 구입하고 대부분의 지표가 하락 신호를 표시 할 때 판매하는 것입니다. 이 접근법은 여러 지표의 통합을 통해 잘못된 신호의 위험을 줄이는 동시에 강력한 시장 추세를 포착하는 것을 목표로합니다.

전략 원칙

이 전략의 핵심은 현재 가격에 대한 여러 기술적 지표의 위치를 계산하고 이러한 지표의 결합 신호에 기반한 거래 결정을 내리는 것입니다. 구체적으로:

  1. 이동평균: EMA와 SMA의 6개의 다른 기간 (10, 20, 30, 50, 100, 200) 을 계산하여 닫기 가격보다 높거나 낮는지 결정합니다.

  2. RSI: RSI > 50을 상승 신호로, RSI < 50을 하락 신호로 고려하여 14 기간 RSI를 사용합니다.

  3. 스토카스틱 오시일레이터: 14개 기간 스토카스틱을 사용하며, K 라인 > 80은 상승선, < 20은 하락선으로 간주됩니다.

  4. CCI: 20주기 CCI를 사용하며, > 100의 값은 상승세를 보이며 < -100의 값은 하락세를 보입니다.

  5. 모멘텀: 10개 기간의 모멘텀을 계산하고, 긍정적인 값은 올리고, 부정적인 값은 하락하는 것으로 간주됩니다.

  6. MACD: 12-26-9 매커드 매개 변수를 사용하며, 긍정적 히스토그램은 상승 추세이며 부정적인 히스토그램은 하락 추세로 간주됩니다.

전략은 모든 상승 신호 (above_count) 와 모든 하락 신호 (below_count) 의 수를 계산하고 그 차이를 계산합니다. 이 차이는 주요 거래 신호로 사용됩니다.

  • 이차가 설정된 entry_long 문턱보다 크면 긴 포지션을 개척합니다.
  • 그 차이가 설정된 entry_short 문턱보다 작을 때, 짧은 포지션을 개척합니다.
  • 이차가 close_long 문턱보다 작을 때, 긴 포지션을 닫습니다.
  • 이차가 close_short 문턱보다 크면 short 포지션을 닫습니다.

이 방법은 전략이 여러 지표의 결합 신호에 기초하여 시장 트렌드의 강도와 방향을 판단하여 더 탄탄한 거래 결정을 내릴 수 있습니다.

전략적 장점

  1. 다중 지표 종합 분석: 여러 가지 기술 지표를 결합함으로써 전략은 시장 동향을 보다 종합적으로 평가할 수 있으며, 단일 지표에서 나올 수 있는 잘못된 신호의 위험을 줄일 수 있습니다.

  2. 높은 적응력: 전략은 다양한 유형의 지표 (트렌드 추적, 추진력 및 오시레이터) 를 사용하여 다양한 시장 환경에서 효과를 유지할 수 있습니다.

  3. 유연한 매개 변수 설정: 사용자는 자신의 위험 선호도와 시장 시각에 따라 입출동 문턱을 조정하여 전략을 더 개인화 할 수 있습니다.

  4. 트렌드 추적 능력: 여러 지표로부터 신호를 합성함으로써 전략은 강력한 시장 트렌드를 포착할 수 있으며 이로 인해 상당한 이익을 얻을 수 있습니다.

  5. 리스크 관리: 전략에는 포지션 폐쇄를 위한 논리가 포함되어 있으며, 시장 추세가 역전될 때 적시에 탈퇴 거래를 도울 수 있으며, 리스크 통제에 도움이 됩니다.

  6. 시각화: 전략은 above_count과 below_count 사이의 차이를 차트에 표시하여 거래자가 시장 트렌드 강도의 변화를 시각적으로 관찰 할 수 있습니다.

전략 위험

  1. 지연: 여러 이동 평균 및 다른 지연 지표의 사용으로 인해 전략은 트렌드 반전에 느리게 반응하여 지연된 입출 또는 출출을 초래할 수 있습니다.

  2. 과잉 거래: 변동 시장에서, 지표는 종종 모순적인 신호를 줄 수 있으며, 과도한 거래와 거래 비용 증가로 이어질 수 있습니다.

  3. 거짓 파업 위험: 옆 시장에서 지표는 작은 변동을 트렌드의 시작으로 잘못 해석하여 잘못된 거래 신호로 이어질 수 있습니다.

  4. 매개 변수 감수성: 전략의 성능은 입출동 한계 설정에 매우 민감할 수 있습니다. 부적절한 매개 변수 설정은 나쁜 전략 성능으로 이어질 수 있습니다.

  5. 스톱 로스 메커니즘이 없습니다. 현재 전략에는 명확한 스톱 로스 메커니즘이 없습니다. 극단적인 시장 조건에서 상당한 손실이 발생할 수 있습니다.

  6. 근본적인 요소를 무시: 전략은 전적으로 기술적 지표에 기반하고 시장에 영향을 줄 수있는 근본적인 요소를 고려하지 않습니다.

전략 최적화 방향

  1. 적응 매개 변수를 도입: 적응 메커니즘을 사용하여 다른 시장 환경에 적응하기 위해 진입 및 출구 문턱을 동적으로 조정하는 것을 고려하십시오. 이는 역사적 변동성을 분석하거나 기계 학습 알고리즘을 사용하여 달성 할 수 있습니다.

  2. 스톱 로스 메커니즘 추가: ATR 또는 고정 비율에 기반한 스톱 로스 메커니즘을 도입하여 단일 거래의 최대 손실을 제한하고 리스크 관리 역량을 향상시킵니다.

  3. 지표 조합을 최적화하십시오: 전략 효율성을 높이기 위해 불필요한 또는 저성능 지표를 제거하여 가장 효과적인 지표 조합을 결정하기 위해 기능 선택 알고리즘을 사용하십시오.

  4. 시간 필터를 도입: 시장 개장 후 첫 몇 시간 동안 거래하는 것과 같은 낮은 시장 변동성 기간 동안 거래를 피하기 위해 시간 필터를 추가하는 것을 고려하십시오.

  5. 시장 감정 지표 통합: VIX 지표 또는 거래량과 같은 시장 감정 지표를 도입하여 시장 환경을 더 잘 판단하고 전략 적응력을 향상시킵니다.

  6. 이동 평균 기간을 최적화하십시오: 이동 평균 기간의 다른 조합을 실험하거나 적응 가능한 이동 평균을 사용하여 다른 시간 프레임에 대한 전략의 적응력을 향상하십시오.

  7. 트렌드 강도 필터링을 추가합니다. ADX와 같은 트렌드 강도 지표를 도입하고, 트렌드가 오스실레이션 시장에서 잘못된 신호를 줄이기 위해 충분히 강할 때만 거래합니다.

  8. 부분 포지션 관리를 구현: 단순한 모든 것을 모두 거래하는 대신 신호 강도에 따라 포지션 크기를 조정하십시오. 이것은 위험을 더 잘 관리하고 자본 활용을 최적화 할 수 있습니다.

요약

EMA/SMA 다중 지표 종합 트렌드 추적 전략은 여러 가지 기술 지표를 기반으로 한 통합 거래 시스템으로, 여러 지표의 결합 신호를 분석하여 시장 추세를 파악하는 것을 목표로합니다. 이 전략의 주요 장점은 포괄적인 시장 분석 능력과 유연한 매개 변수 설정으로 인해 다른 시장 환경에 적응 할 수 있습니다. 그러나 전략에는 지연 및 과거래 가능성과 같은 잠재적 위험도 있습니다.

적응 매개 변수 도입, 위험 관리 메커니즘 강화 및 지표 조합 최적화와 같은 제안 된 최적화 방향을 구현함으로써 전략의 안정성과 수익성이 더욱 향상 될 수 있습니다. 궁극적으로이 전략은 거래자에게 포괄적인 시장 분석 도구를 제공하지만 성공적인 적용은 여전히 거래자의 경험과 지속적인 최적화 노력이 필요합니다.


/*backtest
start: 2024-05-28 00:00:00
end: 2024-06-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA/SMA Above-Below Close with Multiple Indicators", overlay=true)

// EMA and SMA calculations
ema10 = ta.ema(close, 10)
sma10 = ta.sma(close, 10)

ema20 = ta.ema(close, 20)
sma20 = ta.sma(close, 20)

ema30 = ta.ema(close, 30)
sma30 = ta.sma(close, 30)

ema50 = ta.ema(close, 50)
sma50 = ta.sma(close, 50)

ema100 = ta.ema(close, 100)
sma100 = ta.sma(close, 100)

ema200 = ta.ema(close, 200)
sma200 = ta.sma(close, 200)





// Indicators calculations
rsi = ta.rsi(close, 14)
stochK = ta.stoch(close, high, low, 14)
stochD = ta.sma(stochK, 3)
cci = ta.cci(close, 20)
momentum = ta.mom(close, 10)
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)
macdHist = macdLine - signalLine
bullPower = high - ta.ema(close, 13)
bearPower = low - ta.ema(close, 13)



// Calculate the number of plots above and below close
above_count = (ema10 > close ? 1 : 0) + (sma10 > close ? 1 : 0) + 
              (ema20 > close ? 1 : 0) + (sma20 > close ? 1 : 0) + 
              (ema30 > close ? 1 : 0) + (sma30 > close ? 1 : 0) + 
              (ema50 > close ? 1 : 0) + (sma50 > close ? 1 : 0) + 
              (ema100 > close ? 1 : 0) + (sma100 > close ? 1 : 0) + 
              (ema200 > close ? 1 : 0) + (sma200 > close ? 1 : 0) + 
              (rsi > 50 ? 1 : 0) + (stochK > 80 ? 1 : 0) + (cci > 100 ? 1 : 0) + 
//              (adx > 25 and close > open ? 1 : 0) + (ao > 0 ? 1 : 0) + 
              (momentum > 0 ? 1 : 0) + (macdHist > 0 ? 1 : 0)
   //           (stochRsi > 0.8 ? 1 : 0) + (willr > -20 ? 1 : 0) + 
         //     (bullPower > 0 ? 1 : 0) + (uo > 50 ? 1 : 0)

below_count = (ema10 < close ? 1 : 0) + (sma10 < close ? 1 : 0) + 
              (ema20 < close ? 1 : 0) + (sma20 < close ? 1 : 0) + 
              (ema30 < close ? 1 : 0) + (sma30 < close ? 1 : 0) + 
              (ema50 < close ? 1 : 0) + (sma50 < close ? 1 : 0) + 
              (ema100 < close ? 1 : 0) + (sma100 < close ? 1 : 0) + 
              (ema200 < close ? 1 : 0) + (sma200 < close ? 1 : 0) + 
              (rsi < 50 ? 1 : 0) + (stochK < 20 ? 1 : 0) + (cci < -100 ? 1 : 0) + 
      //        (adx > 25 and close < open ? 1 : 0) + (ao < 0 ? 1 : 0) + 
              (momentum < 0 ? 1 : 0) + (macdHist < 0 ? 1 : 0)
       //       (stochRsi < 0.2 ? 1 : 0) + (willr < -80 ? 1 : 0) + 
         //     (bearPower < 0 ? 1 : 0) + (uo < 50 ? 1 : 0)

// Plot the difference between above_count and below_count
plot(below_count - above_count, title="Above-Below Count", color=color.orange, linewidth=2)

// Zero line
hline(0, "Zero Line", color=color.red, linewidth=2)

// Strategy
entry_long = input(12, title="entry long")
entry_short = input(-12, title="entry short")

close_long = input(-9, title="close long")
close_short = input(9, title="close short")

if (below_count - above_count > close_short)
    strategy.close("Sell")

if (below_count - above_count < close_long)
    strategy.close("Buy")
// Buy signal
if (below_count - above_count > entry_long)
//    strategy.close("Sell")
    strategy.entry("Buy", strategy.long)

// Sell (or close short) signal
if (below_count - above_count < entry_short)
//    strategy.close("Buy")
    strategy.entry("Sell", strategy.short)


관련

더 많은