다중 지표 트렌드 추적 전략

저자:차오장, 날짜: 2023-09-23 15:19:46
태그:

전반적인 설명

이 전략은 트렌드 식별을 위한 여러 지표를 통합하고, 정렬된 방향 변화를 기반으로 거래 신호를 생성합니다. 그것은 이동 평균 속도, STOCH 및 MACD를 결합하여 포괄적이고 견고한 트렌드 추적 시스템을 형성합니다.

전략 논리

주요 지표는 다음과 같습니다.

  1. 이동 평균 속도: 가격 동력을 반영합니다.

  2. STOCH: 트렌드 변화에 따라 과반 판매/ 과반 구매

  3. MACD: 두 개의 이동 평균에서 트렌드 변경.

거래 규칙은 다음과 같습니다.

  1. 이동 평균 속도가 상승하면 상승 신호가 됩니다.

  2. 과잉 매수 지대에서 STOCH는 하락 신호를 줍니다.

  3. MACD 긍정적인 크로스오버는 상승 신호를 줍니다.

  4. 2개의 표시기가 신호를 맞추면 입력합니다.

  5. 신호가 바뀌면 출구

이 조합은 여러 차원에서 트렌드를 평가하고, 높은 설득 신호를 위해 잡음을 필터합니다.

장점

단일 지표와 비교할 때, 콤보 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 조합된 시각은 정확성을 향상시킵니다.

  2. 집합 필터링은 잘못된 신호를 줄여줍니다.

  3. 트렌드 및 평균 반전 지표가 포함됩니다.

  4. 정렬된 신호는 높은 확신을 가지고 있으며, 거짓 탈출을 피합니다.

  5. 간단하고 명확한 규칙, 실행하기 쉽습니다.

  6. 유연한 파라미터 조정, 견고함

  7. 서로 다른 기간에 적용됩니다.

  8. 기계 학습을 통해 지표 무게를 훈련시킬 수 있습니다.

  9. 전체적으로 단일 지표보다 더 나은 안정성과 수익성.

위험성

그 장점에도 불구하고 고려해야 할 위험은 다음과 같습니다.

  1. 복수의 지표로 복잡성이 증가합니다.

  2. 도전적인 매개 변수 최적화와 가중화

  3. 서로 충돌하는 신호가 나타날 수 있습니다.

  4. 어떤 지연은 항상 존재합니다. 모든 손실을 피할 수 없습니다.

  5. 운과 함께 불확실한 일방적 대기 기간

  6. 종합 신호는 트렌드 거래의 본질적인 위험을 제거 할 수 없습니다.

  7. 높은 거래 빈도는 거래 비용을 증가시킵니다.

  8. 보상/위험 비율을 감시해야 합니다.

개선

분석에 따라 개선은 다음을 포함 할 수 있습니다.

  1. 다른 시장에서 지표의 효과를 평가합니다.

  2. 과도한 부착을 방지하기 위해 매개 변수 견고성 검사를 추가합니다.

  3. 충돌을 줄이기 위해 지표 가중치를 최적화하십시오.

  4. 심각한 손실을 제한하기 위해 정지를 실행하십시오.

  5. 시간 출구를 사용해서 무제한 대기 기간을 제어해

  6. 거래 빈도의 거래 비용에 미치는 영향을 평가합니다.

  7. 리스크 메트릭의 제약을 포함합니다.

  8. 여러 시장에서 견고성을 테스트합니다.

  9. 전략의 효과를 지속적으로 검증합니다.

결론

이 전략은 트렌드 평가를 위해 여러 지표를 통합하여 안정적인 종합 신호를 형성합니다. 그러나 지속적인 최적화는 모든 전략의 핵심이며 위험을 모니터링하고 과도한 적응을 방지합니다. 양자 거래는 지속적인 학습 과정입니다.


/*backtest
start: 2022-09-16 00:00:00
end: 2023-09-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// By TradeStation
//@version=5

strategy("Mov Avg Speed Strategy", overlay=true)

src = input(close, title="Source")

// MA Speed  
avg_len = input.int(50, minval=1, title="Avg Length", group="MA Speed")
roc_len = input.int(1, minval=1, title="Rate of Change Length", group="MA Speed")
avg_roc_len = input.int(10, minval=1, title="Avg Rate of Change Length", group="MA Speed")

// Stochastic
stoch_len = input.int(14, minval=1, title="Stochastic Length", group="Stochastic")
smooth_k = input.int(3, minval=1, title="Stochastic Smooth K", group="Stochastic")
overbought = input.float(80, title="Stochastic Overbought", group="Stochastic")
oversold = input.float(20, title="Stochastic Oversold", group="Stochastic")

// MACD
fast_length = input(12, title="Fast Length", group="MACD")
slow_length = input(26, title="Slow Length", group="MACD")
macd_avg_length = input.int(9, title="MACD Avg Length",  minval=1, group="MACD")

// MA Speed
avg = ta.sma(src, avg_len)
roc = ta.roc(avg, roc_len)
avg_roc = ta.sma(roc, avg_roc_len)
avg_roc_signal = avg_roc > 0 ? 1 : avg_roc < 0 ? -1 : 0 

// Stochastic k
k = ta.sma(ta.stoch(close, high, low, stoch_len), smooth_k)
stochastic_signal = k <= oversold ? 1 : k >= overbought ? -1 : 0

// MACD
fast_ma = ta.ema(src, fast_length)
slow_ma = ta.ema(src, slow_length)
macd = fast_ma - slow_ma
macd_avg = ta.ema(macd, macd_avg_length)
macd_signal = macd_avg > macd_avg[1] ? 1 : macd_avg < macd_avg[1] ? -1 : 0

// set the signal couint
long_count = 0
short_count = 0

if macd_signal == 1
    long_count += 1

else if macd_signal == -1
    short_count += 1
 
if stochastic_signal == 1
    long_count += 1

else if stochastic_signal == -1
    short_count += 1
 
if avg_roc_signal == 1
    long_count += 1

else if avg_roc_signal == -1
    short_count += 1

if (long_count >= 2)
    strategy.entry("Long", strategy.long)

if (short_count >= 2)
    strategy.entry("Short", strategy.short)

더 많은