이 전략은 CCI 지표에 기반한 트렌드 다음 전략입니다. 그것은 다른 시간 프레임의 두 CCI 사이의 교차를 모니터링함으로써 거래 신호를 생성합니다. 구체적으로, 짧은 기간 CCI가 더 긴 기간 CCI를 깨는 경우를 감지하고 돌파 방향에 따라 긴 또는 짧은 포지션을 결정합니다.
이 전략의 핵심 논리는 다음과 같습니다.
긴 규칙:
구체적인 짧은 규칙:
이 전략은 더 짧은 기간 CCI의 민감성과 더 긴 기간 CCI의 안정성을 활용하여 동향을 파악하고 추적합니다.
이 전략의 장점:
또한 몇 가지 위험이 있습니다.
해결책:
전략이 더 이상 최적화 될 수 있는 영역:
결론적으로, 이것은 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)