다중 지표 조합 추세 추적 전략


생성 날짜: 2023-09-23 15:19:46 마지막으로 수정됨: 2023-09-23 15:19:46
복사: 2 클릭수: 656
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요

이 전략은 여러 지표를 통합하여 큰 추세를 판단하고, 지표 조합 신호의 동방향 변화에 따라 거래 결정을 생성한다. 전략은 이동 평균 속도, 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. Stop Loss Stop를 설정하여 심각한 손실을 피하십시오.

  5. 시간 출구 (time exits) 를 이용하여, 일방적인 무목표 보유를 통제한다.

  6. 거래 빈도가 거래 비용에 미치는 영향을 평가하십시오.

  7. 리스크 지표 제약을 도입하라

  8. 다중 시장의 강도를 테스트하는 것.

  9. “전략을 지속적으로 검증하고, 시대에 뒤떨어지지 않도록 한다”.

요약하다

이 전략은 통합 multiples 지표 판단 트렌드를 통해 안정적인 조합 신호 시스템을 형성한다. 그러나 모든 전략은 지속적으로 최적화 및 발전을 필요로하고, 위험 지표에 주의를 기울이고 과다 적응을 방지한다. 양적 거래는 지속적인 학습과 반복 과정이다.

전략 소스 코드
/*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)