Chiến lược này là một chiến lược theo xu hướng dựa trên chỉ số CCI. Nó tạo ra các tín hiệu giao dịch bằng cách theo dõi sự chéo chéo giữa hai CCI của các khung thời gian khác nhau. Cụ thể, nó sẽ phát hiện nếu CCI ngắn hơn phá vỡ CCI dài hơn và xác định các vị trí dài hoặc ngắn dựa trên hướng đột phá.
Logic cốt lõi của chiến lược này là:
Các quy tắc cụ thể dài:
Các quy tắc cụ thể ngắn:
Như chúng ta có thể thấy, chiến lược này tận dụng tính nhạy cảm của CCI ngắn hạn và sự ổn định của CCI dài hạn để xác định và theo dõi xu hướng.
Những lợi thế của chiến lược này:
Ngoài ra còn có một số rủi ro:
Giải pháp:
Các lĩnh vực mà chiến lược có thể được tối ưu hóa thêm:
Kết luận, đây là một chiến lược theo xu hướng đơn giản dựa trên giao thoa CCI. Nó có thể xác định hiệu quả hướng xu hướng và theo xu hướng. Trong khi đó, nó kiểm soát rủi ro thông qua dừng lỗ. Chiến lược này đơn giản, thực tế, linh hoạt trong điều chỉnh tham số và có thể phục vụ như một chiến lược lượng khởi động. Nó có thể được nâng cao thành một hệ thống mạnh mẽ hơn thông qua tối ưu hóa và kết hợp hơn nữa.
/*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)