4시간 CCI 반전 전략

저자:차오장, 날짜: 2023-10-13 15:29:05
태그:

전반적인 설명

이것은 CCI 지표에 기반한 반전 거래 전략입니다. CCI 지표가 과소매 또는 과소매 수준을 표시 할 때 반전 거래를 열 것입니다. 전반적으로이 전략은 CCI 지표의 과소매 및 과소매 기능을 사용하여 가격 반전 기회를 포착합니다.

전략 논리

첫째, 이 전략은 CCI 지표에 기초하고 있습니다. CCI 지표의 공식은 다음과 같습니다.

CCI = (기반 가격 - 단순한 이동 평균) / (0.015 * 표준편차)

어디서요? 전형적인 가격 = (최고 + 최저 + 종료) / 3 단순 이동 평균 = 지난 N 일 동안의 전형 가격 이동 평균
표준편차 = 지난 N일 동안의 전형 가격의 변동의 제곱근

이 전략은 11주기 CCI 지표를 사용 합니다. -150은 과반 판매 수준, 150은 과반 구매 수준으로 설정됩니다.

매 바 닫을 때, 11 주기 CCI 지표가 확인됩니다. CCI가 -150 이하로 넘으면 긴 신호가 생성됩니다. CCI가 150 이상으로 넘으면 짧은 신호가 생성됩니다.

신호를 받은 후 시장 주문을 사용하여 포지션을 개설합니다. 1%의 수익 목표와 0.5%의 스톱 로스를 설정합니다.

이점 분석

  1. CCI 지표를 이용하면 가격 전환 기회를 효과적으로 파악할 수 있습니다.
  2. CCI 매개 변수는 최적화를 위해 조절할 수 있습니다.
  3. 고정 수익 목표와 스톱 로스 비율은 위험을 효과적으로 제어합니다.
  4. 단순하고 명확한 전략 논리, 이해하기 쉽고 실행하기 쉬운

위험 분석

  1. CCI 표시기는 많은 잘못된 신호를 생성할 수 있고, 입력 신호는 신뢰할 수 없을 수 있습니다.
  • 솔루션: CCI 매개 변수를 최적화, 다른 지표와 필터를 추가
  1. 고정 수익 목표 및 중지 손실 비율은 다른 제품에 적합하지 않을 수 있습니다.
  • 솔루션: 동적 수익 목표 및 스톱 손실을 추가합니다.
  1. 이 전략은 CCI에만 의존하고 있으며, 비효율성 위험이 높습니다.
  • 해결책: 안정성을 높이기 위해 여러 지표를 결합하십시오.
  1. 거래 비용에 대한 고려가 없습니다, 라이브 공연은 피해를 입을 수 있습니다
  • 솔루션: 미끄러짐 통제를 추가하고 거래 빈도를 줄이십시오.

최적화 방향

  1. 더 나은 매개 변수 조합을 찾기 위해 CCI 매개 변수를 최적화
  2. 신호 필터링을 위해 MACD, KDJ와 같은 다른 지표를 추가
  3. 일정한 비율 대신 동적인 이익 목표 및 손해 중지 개발
  4. 거래 빈도를 낮추고 거래 비용 영향을 줄이기 위해 전략을 최적화
  5. 라이브 트레이딩을 위한 최고의 매개 변수 조합을 찾기 위해 백테스팅 최적화를 수행

요약

4시간 CCI 역전 전략은 역전 거래를 위한 CCI 지표를 이용한 간단한 전략이다. 명확한 논리와 쉬운 구현의 장점이 있다. 그러나 신뢰할 수 없는 CCI 신호와 유연하지 않은 이익 목표/손실 중지 등의 약점도 있다. CCI 매개 변수를 최적화하고 필터 지표를 추가하고, 동적 출구를 개발함으로써 추가적인 개선이 가능하다. 전반적으로 이 전략은 양적 거래에 대한 CCI 기반의 아이디어를 제공하지만 실제 적용 전에 추가 최적화가 필요하다.


/*backtest
start: 2023-09-12 00:00:00
end: 2023-10-12 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("4H CCI Strategy", overlay=true)
length = input( 11 )
overSold = input( -150 )
overBought = input( +150 )
price1 = high
price2 = low
ucci = cci(price1, length)
dcci = cci(price2, length)
vcci = cci(ohlc4, 11)

resCustom = input(title="Timeframe", defval="15")
Length = input(16, minval=1)
xPrice = request.security(syminfo.tickerid, resCustom, hlc3)
xvnoise = abs(xPrice - xPrice[1])
nfastend = 0.666
nslowend = 0.0645
nsignal = abs(xPrice - xPrice[Length])
nnoise = sum(xvnoise, Length)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) 
nAMA = nz(nAMA[1]) + nsmooth * (xPrice - nz(nAMA[1]))
basis1 = nAMA
slope = change(basis1,1)

if (not na(vcci))
    if (crossover(dcci, overSold))
        strategy.entry("CCILE", strategy.long, comment="CCILE")
        strategy.exit("exit", "CCILE", profit = 0.01, loss = 0.005)
    if (crossunder(ucci, overBought))
        strategy.entry("CCISE", strategy.short, comment="CCISE")
        strategy.exit("exit", "CCISE", profit = 0.01, loss = 0.005)
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

더 많은