OBV 및 CCI 지표에 기반한 트렌드 전략

저자:차오장, 날짜: 2024-02-21 14:05:12
태그:

img

전반적인 설명

이 전략은 OBV 및 CCI 지표에 기반한 트렌드 다음 전략입니다. 시장 추세와 자본 흐름을 판단하기 위해 OBV 지표를 사용하며, 거래 신호를 생성하기 위해 CCI 지표를 필터링하기 위해 사용합니다. OBV 및 CCI 지표가 현재 상승 추세를 확인하면 길게 이동합니다. 두 지표가 현재 하락 추세를 확인하면 짧게 이동합니다.

전략 논리

이 전략은 주로 OBV와 CCI 두 지표에 의존한다. OBV 지표는 시장의 자본 흐름을 반영할 수 있다. OBV가 녹색일 때, 현재의 추세는 자본 유입이며, OBV가 빨간색일 때, 현재의 추세는 자본 유출이다. CCI 지표는 필터로 사용됩니다. 임계치를 설정함으로써, CCI가 임계보다 높을 때, 그것은 황소 시장으로 간주되며, CCI가 임계 이하일 때, 그것은 곰 시장으로 간주됩니다.

엔트리 신호의 경우, 마지막 기간 OBV 값이 녹색 (자본 유입) 이고 CCI가 문턱 이상 (부산 시장에서) 이고, 한편 OBV 라인이 EMA 라인을 넘어서면 구매 신호가 생성됩니다.

출구 신호의 경우, 마지막 기간 OBV 값이 빨간색 (자본 유출) 이고 CCI가 문턱 이하 (곰 시장에서) 이고 OBV 선이 EMA 선 아래를 넘어가면 판매 신호가 생성됩니다.

따라서 OBV를 사용하여 주요 트렌드를 판단하고 CCI 지표로 필터링하고 EMA 크로스오버를 사용하여 결합하여 구체적인 거래 신호를 생성함으로써 전략은 트렌드를 따라 실현합니다.

이점 분석

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

  1. OBV를 사용하여 시장 자본 흐름과 트렌드 방향을 결정하고, 단기 시장 소음 간섭을 피합니다.

  2. CCI 지표를 필터링에 활용하여 거래 신호를 더 신뢰할 수 있도록 합니다.

  3. 높은 품질의 콘크리트 거래점을 생성하기 위해 EMA 크로스오버를 사용하는 것

  4. 규칙은 명확하고 간단하며 이해하기 쉽고 실행하기 쉽습니다.

위험 분석

이 전략에는 몇 가지 잠재적 위험도 있습니다.

  1. OBV 및 CCI 표시기가 잘못된 신호를 생성할 수 있는 가능성

  2. 빈번한 거래 신호, 과잉 거래가 쉽다

  3. 회귀 도중 함락될 수 있습니다.

  4. 패러미터 조정이 안 되어서 전략 성능이 좋지

이러한 위험을 제어하기 위해 매개 변수 최적화, 거래 주파수 조정, 스톱 로스 설정 및 필터 사용과 같은 방법을 적용 할 수 있습니다.

최적화 방향

전략은 다음 측면에서 최적화 될 수 있습니다:

  1. 다른 매개 변수의 영향을 평가하고 최적의 매개 변수 조합을 찾습니다.

  2. 거래 빈도 제한을 설정하여 거래 과잉을 피합니다.

  3. 단일 거래 손실을 통제하기 위해 스톱 로스 메커니즘을 추가합니다.

  4. 신호 품질을 향상시키기 위해 필터로 다른 표시기를 추가합니다.

  5. 트레이딩 신호를 더 신뢰할 수 있도록 엔트리 및 엑시트 로직을 최적화합니다.

요약

요약하자면, 이것은 가격 추세를 효과적으로 추적하고 소음 간섭을 피할 수있는 기본 트렌드 다음 전략입니다. 그러나 여전히 매개 변수 최적화, 스톱 로스, 거래 주파수 제어 등과 같은 개선이 필요한 몇 가지 위험이 있습니다. 매개 변수를 과학적으로 설정하면 상당한 백테스트 성능 향상이 가능합니다. 전략은 학습 및 연습을 위해 더 고급 양 트레이더에 적합합니다.


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

//author: SudeepBisht
//@version=3
strategy("SB_CCI coded OBV Strategy", overlay=true)

src = close
length = input(20, minval=1, title="CCI Length")
threshold=input(0, title="CCI threshold for OBV coding")
lengthema=input(13, title="EMA length")
obv(src) => 
    cum(change(src) > 0 ? volume : change(src) < 0 ? -volume : 0*volume)
    
o=obv(src)
c=cci(src, length)
col=c>=threshold?green:red
chk=col==green?1:0
ema_line=ema(o,lengthema)

//plot(o, color=c>=threshold?green:red, title="OBV_CCI coded", linewidth=2)
//plot(ema(o,lengthema), color=orange, linewidth=2)


if (not na(ema_line))
    if (crossover(o, ema_line) and chk[1]==1)
        strategy.entry("RsiLE", strategy.long, comment="RsiLE")
    if (crossunder(o, ema_line) and chk[1]==0)
        strategy.entry("RsiSE", strategy.short, comment="RsiSE")


더 많은