CCI의 두 가지 시간적 흐름 전략

저자:차오장, 날짜: 2023-11-24 10:53:07
태그:

img

전반적인 설명

이 전략은 CCI 지표에 기반한 트렌드 다음 전략입니다. 그것은 다른 시간 프레임의 두 CCI 사이의 교차를 모니터링함으로써 거래 신호를 생성합니다. 구체적으로, 짧은 기간 CCI가 더 긴 기간 CCI를 깨는 경우를 감지하고 돌파 방향에 따라 긴 또는 짧은 포지션을 결정합니다.

전략 논리

이 전략의 핵심 논리는 다음과 같습니다.

  1. 두 개의 CCI를 정의하십시오.
  2. C1이 C2를 넘으면
  3. C1이 C2보다 낮을 때,
  4. 시그널 발사 후 출구를 결정하기 위해 ci1 및 ci2의 값을 사용

긴 규칙:

  1. ci1는 ci2보다 낮고, 더 짧은 기간 CCI는 더 긴 기간 CCI보다 낮습니다.
  2. 스톱 로스 조건: ci1 <-50 및 변화 속도 < 0 또는 ci1이 -100 이하로 끊어집니다.

구체적인 짧은 규칙:

  1. ci1가 ci2보다 낮아지고, 더 짧은 기간 CCI가 더 긴 기간 CCI보다 낮아집니다.
  2. 스톱 로스 조건: ci1 > 100 및 변화율 > 0 또는 ci2 100 이상

이 전략은 더 짧은 기간 CCI의 민감성과 더 긴 기간 CCI의 안정성을 활용하여 동향을 파악하고 추적합니다.

장점

이 전략의 장점:

  1. CCI 지표의 강도를 사용하여 트렌드를 효과적으로 식별합니다.
  2. 이중 CCI 디자인은 소음 무역의 일부를 필터
  3. 장기 및 단기 CCI의 조합은 트렌드를 따르면서 위험을 통제합니다.
  4. 단순하고 명확한 전략 규칙, 이해하기 쉽고 실행하기 쉬운
  5. 매우 구성 가능하며 CCI 기간과 스톱 손실 조건 모두 사용자 정의 가능합니다.

위험성

또한 몇 가지 위험이 있습니다.

  1. CCI를 이용한 범위와 변동성 시장을 식별하는 능력이 약하다
  2. 장기 및 단기 CCIs 사이에 오차가 발생할 수 있으며 잘못된 신호를 유발할 수 있습니다.
  3. 잘못된 스톱 로스 설정은 엄청난 손실로 이어질 수 있습니다.
  4. 부적절한 매개 변수 조정 또한 크게 전략 수익성에 영향을

해결책:

  1. 시장 상태를 결정하기 위해 다른 지표를 포함하고, 변동성 기간에 거래를 피하십시오.
  2. CCI 오차로 인한 오류를 피하기 위해 필터를 추가합니다.
  3. 다양한 스톱 로스 레벨을 최적화하고 테스트합니다
  4. 백테스팅과 튜닝을 통해 적절한 파라미터 세트를 찾습니다

최적화 방향

전략이 더 이상 최적화 될 수 있는 영역:

  1. 더 체계적인 거래 시스템을 구축하기 위해 더 많은 지표를 추가합니다.
  2. 평일과 세션 사이의 수익성 차이 테스트
  3. 기계 학습을 사용하여 더 나은 매개 변수를 검색
  4. 각기 다른 제품에 대한 튜닝 매개 변수
  5. 입국 및 출입 규칙을 최적화

결론

결론적으로, 이것은 CCI 크로스오버에 기반한 간단한 트렌드 다음 전략입니다. 트렌드 방향을 효과적으로 식별하고 트렌드를 따라갈 수 있습니다. 한편으로는 스톱 로스를 통해 위험을 제어합니다. 이 전략은 간단하고 실용적이며 매개 변수 조정에서 유연하며 시작량 전략으로 사용될 수 있습니다. 추가 최적화 및 조합을 통해 더 강력한 시스템으로 향상 될 수 있습니다.


/*backtest
start: 2023-10-24 00:00:00
end: 2023-11-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="my work",calc_on_order_fills=true,currency=currency.USD, default_qty_type=strategy.percent_of_equity,commission_type=strategy.commission.percent)


source = close
shortlength=input(14)
longlength=input(56)
aa=input(2)
Ss=input(75)

//Cci part
ci1=cci(source,shortlength)   //4시간봉의 기본 cci
ci2=cci(source,longlength)   //4시간봉에서 12시봉의 cci 무빙측정

//오린간 선생님의 WT + ichimoku
len = input(10)
lenTurn = input(9)
lenStd = input(26)

wtm_e(so, l) =>
    esa = ema(so, l)
    d = ema(abs(so - esa), l)
    ci = (so - esa) / (0.015 * d)
    ema(ci, l*2+1)

alh(len) => avg(lowest(len), highest(len))
alh_src(src, len) => avg(lowest(src, len), highest(src, len))

wt = wtm_e(close,len)
turn = alh_src(wt, lenTurn)
std = alh_src(wt, lenStd)

cnt = 0
if wt > turn
    cnt:=cnt+1
if wt > std
    cnt:=cnt+1


//100,-100선
h0 = hline(100)
h1 = hline(-100)

//plot(ci,color=green)
// plot(k,color=green)
// plot(d,color=red)
plot(ci1,color=green)
plot(ci2,color=red)

plot(0,color=black)
plot(100,color=black)
plot(-100,color=black)

fill(h0,h1,color=purple,transp=95)

bgcolor(cnt==0 ? red : cnt==1 ? blue : cnt == 2 ? green : na, transp = Ss)

//기간조정

Fromday = input(defval=1, title="from day", minval=1, maxval=31)
FromMonth = input(defval=1, title="from month", minval=1, maxval=12)
FromYr = input(defval=2019, title="from yr", minval=1970)

Today = input(defval=13, title="to day", minval=1, maxval=31)
ToMonth = input(defval=12, title="to month", minval=1, maxval=12)
ToYr = input(defval=2019, title="to yr", minval=1970)

startDate = timestamp(FromYr, FromMonth, Fromday, 00, 00)
finishDate = timestamp(ToYr, ToMonth, Today, 00, 00)
Time_cond = true


/////롱

if  crossover(ci1,ci2) and change(ci2)>0 and Time_cond
    strategy.entry("go", strategy.long, comment="go")
    
strategy.close("go", (ci2<0 and ci1 <-50 and change(ci1)<0) or (crossunder(ci1,-100) and strategy.openprofit<0) and change(cnt)<0)



/////숏

if  (crossunder(ci1,ci2) and change(ci2)<0 and falling(ci1,aa)) and Time_cond
    strategy.entry("die", strategy.short, comment="die")
    
strategy.close("die", (ci2>0 and ci1 > 100 and change(ci1)>0) or (crossover(ci2,100) and strategy.openprofit<0) and change(cnt)>0)

더 많은