4시간 CCI 반전 전략


생성 날짜: 2023-10-13 15:29:05 마지막으로 수정됨: 2023-10-13 15:29:05
복사: 2 클릭수: 929
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요

이 전략은 CCI 지표에 기반한 역전 거래 전략이다. CCI 지표가 오버 바이 오버 셀 영역을 나타낼 때 역전 거래한다. 전체적으로 이 전략은 CCI 지표의 오버 바이 오버 셀 특성을 활용하여 가격 역전 기회를 포착하고 거래한다.

전략 원칙

우선, 이 전략은 CCI 지표에 기초한다.

CCI = (Typical Price - 간단한 이동 평균) / (0.015 * 평균 차)

그 중 하나는 Typical Price = (최고 가격 + 최저 가격 + 종점 가격) / 3 간단한 이동 평균 = 지난 N일 동안의 전형적인 가격의 이동 평균 평균 차이는 지난 N일 동안의 전형적인 가격 차이의 제곱의 평균입니다.

이 전략은 11의 길이를 가진 CCI 지표를 사용한다. 그리고 150을 초과 판매 지역, 150을 초과 구매 지역으로 설정한다.

각 K선 닫기시, 길이 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 변수를 최적화하고, 필터 지표를 추가하고, 동적으로 정지 손실을 개발하는 등의 방법으로 이 전략의 효과를 더욱 강화할 수 있다.

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