다중 지표 EMA 전략

저자:차오장, 날짜: 2023-09-28 15:57:34
태그:

전반적인 설명

다중 지표 EMA 전략은 거래 신호를 생성하기 위해 EMA, MACD, 오시레이터, RSI, 스토카스틱, 볼링거 밴드와 같은 여러 지표를 통합하는 트렌드를 따르는 전략입니다. 여러 지표에 기반한 복합 신호를 계산함으로써 시장이 상승 추세 또는 하락 추세인지 결정합니다.

전략 논리

이 전략은 먼저 다음의 지표를 계산합니다.

  • EMA: 특정 기간 동안의 지수적인 이동 평균

  • MACD: MACD DIF 및 DEA 라인

  • 오시일레이터 (Oscillator): 일정 기간 동안 클로즈와 오픈의 차입니다.

  • RSI: 한 기간 동안의 상대적 강도 지수

  • 스토카스틱: 매개 변수와 함께 스토카스틱 K와 D 값

  • 볼링거 밴드 (Bollinger Bands): 한 기간 동안 상위, 중위 및 하위 밴드.

그 다음 각 지표는 현재 상태에 따라 값을 부여합니다. 예를 들어, 20 이하의 스토카스틱은 2로 지정되며, 80 이상의 RSI는 -2로 지정됩니다.

지표 값은 합쳐져 복합 신호 트리거를 얻습니다. 트리거가 >= 7이면 긴 신호가 생성됩니다. 트리거가 <= -7이면 짧은 신호가 생성됩니다.

여러 지표의 신호를 결합함으로써 전략은 트렌드 방향을 더 정확하게 결정하고 신뢰할 수있는 거래 신호를 생성 할 수 있습니다.

이점 분석

이 다중 지표 전략의 주요 장점은 더 포괄적이고 정확한 평가를 위해 여러 지표의 강점을 결합하여 개별 지표에서 잘못된 신호를 피한다는 것입니다.

특히 이점은 다음과 같습니다.

  1. 여러 지표를 결합하면 더 신뢰할 수 있는 트렌드 결정이 가능합니다. 개별 지표는 오해의 소지가 있는 신호를 줄 수 있지만 여러 지표는 서로를 확인하고 오류를 줄일 수 있습니다.

  2. 다른 지표는 그 특성에 따라 트렌드의 다른 단계를 식별할 수 있습니다. 예를 들어, 트렌드 시작에 대한 MACD, 과잉 구매/ 과잉 판매 상태에 대한 RSI.

  3. 서로 다른 매개 변수를 가진 지표는 다른 시간 프레임에서 특징을 캡처 할 수 있습니다. 예를 들어 빠른 EMA 기간과 느린 EMA 기간.

  4. 각 지표의 무게는 사용자 정의 될 수 있습니다. 더 중요한 지표는 더 높은 무게를 할당 할 수 있습니다.

  5. 더 나은 성능을 위해 지표 믹스와 가중을 백테스팅을 통해 최적화 할 수 있습니다.

위험 분석

여러 가지 지표를 사용함에도 불구하고 몇 가지 위험이 있습니다.

  1. 지표의 잘못된 조합은 강점을 활용하지 못하거나 충돌을 일으킬 수 있습니다. 지표의 적용 가능성에 대한 올바른 이해가 필요합니다.

  2. 비합리적인 무게 분포는 지표의 중요성을 부정확하게 나타낼 수 있습니다. 무게는 반복적인 테스트와 조정이 필요합니다.

  3. 단일 매개 변수 집합은 과장 조정을 유발할 수 있습니다. 여러 시간 프레임 검증을 사용해야합니다.

  4. 정적 지표 가중/패라미터는 변화하는 시장 조건에 적응할 수 없습니다. 동적 조정 메커니즘이 필요합니다.

  5. 지표 신호가 지연될 수 있습니다. 다른 기술을 사용하여 중지 손실 시기를 결정해야합니다.

  6. 여러 지표로 인한 전략의 복잡성은 충분한 역사적 데이터와 더 큰 매개 변수 조정 어려움을 필요로합니다.

개선 할 기회

전략을 개선할 수 있는 몇 가지 방법:

  1. 현재 시장 조건에 민감한 것을 찾기 위해 더 많은 지표 유형을 테스트하십시오.

  2. 다양한 시간 프레임에 걸쳐 동향을 포착하기 위해 지표 기간을 최적화하십시오.

  3. 상대적 중요성을 더 잘 표현하기 위해 지표 무게를 최적화하십시오.

  4. 동적 조정 추가로 변하는 시장 조건에 적응하는 실시간으로 매개 변수와 무게를 최적화합니다.

  5. 손실을 제한하기 위해 합리적인 스톱 로스 포인트를 가진 스톱 로스 전략을 포함합니다.

  6. 단일 시간 프레임에 과도하게 적합하지 않도록 여러 시간 프레임 검증을 추가합니다.

  7. 최적의 매개 변수 조합을 찾기 위해 단계적 및 조합적 최적화를 사용합니다.

  8. 더 똑똑한 동적 지표 가중치를 위해 기계 학습을 추가합니다.

  9. 진입 및 출구 논리를 최적화하여 트렌드를 추적하고 과잉 거래를 피하기 위해 균형을 맞추십시오.

결론

다중 지표 EMA 전략은 시장 트렌드 방향을 결정하고 거래 신호를 생성하기 위해 EMA, MACD, RSI 및 기타의 복합 강점을 활용합니다. 단일 지표 전략과 비교하면 더 포괄적인 시장 분석을 제공하며 잘못된 신호를 감소시킵니다. 매개 변수 조정과 같은 추가 최적화로 복잡한 변화하는 시장 조건에 적응 할 수 있습니다. 전반적으로 다중 지표 EMA 전략은 매우 효과적인 트렌드 다음 전략입니다.


/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ally17

//@version=4
// strategy("ELIA MULTI STRATEGY",overlay=true,initial_capital=1000, default_qty_type=strategy.percent_of_equity, commission_type=strategy.commission.percent, commission_value=0.00, default_qty_value=25)

//INPUT
start = timestamp(input(2021, "start year"), 1, 1, 00, 00)
end = timestamp(input(9999, "end year"), 1, 1, 00, 00)

emalen=input(80, title="Ema Len")
macdfast=input(12, title="Macd Fast Len")
macdslow=input(26, title="Macd Fast Len")
macdsig=input(12, title="Macd Signal Len")
occlen=input(15, title="Occ Len")

rsilen=input(2, title="Rsi Len")
stochklen=input(11, title="Stk K Len")
stochdlen=input(3, title="Stk D Len")
stochlen=input(3, title="Stk Smooth Len")
bblength = input(10, minval=1, title="BB Len")
mult = input(2.0, minval=0.001, maxval=50, title="BB Std Dev")

momlen=input(10, title="Mom Len")


//CALCOLI
var trigger = 0.0

var emavar = 0.0
var macdvar = 0.0
var occvar = 0.0

var rsivar = 0.0
var stochvar = 0.0
var bbvar = 0.0

var donvar =0.0

ema = ema(close,emalen)

[macdLine, signalLine, histLine] = macd(close, 12, 26, 9) // MACD

occ = ema(close,occlen) - ema(open,occlen)

rsi = rsi(close, rsilen) // RSI

stoch = sma(stoch(close, high, low, stochklen), stochlen) // Stoch

basis = sma(close, bblength)
dev = mult * stdev(close, bblength)
upper = basis + dev
lower = basis - dev

moment = mom(close, momlen) // Momentum

Obv = obv // OBV


//PLOT


//STRATEGIA
emavar := (close>ema)? 3 : -3
macdvar := (macdLine>signalLine)? 3 : -3
occvar := (occ>0)? 3 : -3

rsivar := (rsi<20)? 2 : (rsi>50 and rsi<80)? 1 : (rsi>80)? -2 : (rsi<50 and rsi>20)? -1 : 0
stochvar := (stoch<20)? 2 : (stoch>80)? -2 : 0
bbvar :=  (close<lower)? 2 : (close>upper)? -2 : 0

trigger := emavar+macdvar+occvar+rsivar+stochvar+bbvar

longcondition = trigger>=7
closelong = trigger<3

shortcondition = trigger<=-7
closeshort = trigger >-3

trendcolor = longcondition ? color.green : shortcondition? color.red : (trigger>3 and trigger<7)? #A2E1BF : (trigger<-3 and trigger>-7)? #E19997 : na
bgcolor(trendcolor, transp=80)


if time > start and time < end
    if longcondition
        strategy.entry("LONG", long=strategy.long)

if closelong
    strategy.close("LONG", comment="CLOSE LONG")
    
if time > start and time < end
    if shortcondition
        strategy.entry("SHORT", long=strategy.short)

if closeshort
    strategy.close("SHORT", comment="CLOSE SHORT")
    
//plotshape(longcondition, color=color.green, text="L", size=size.small, style=shape.triangledown)
//plotshape(shortcondition, color=color.red, "S"(trigger), size=size.small, style=shape.triangledown)
//plotshape(closelong, color=color.purple, text="LC", size=size.small, style=shape.triangledown)
//plotshape(closeshort, color=color.purple, text="SC", size=size.small, style=shape.triangledown)


더 많은