
Chiến lược này là chiến lược theo dõi xu hướng dựa trên chỉ số CCI. Nó sử dụng chỉ số CCI của hai chu kỳ khác nhau để tạo tín hiệu giao dịch. Cụ thể hơn, nó sẽ theo dõi xem chỉ số CCI của một chu kỳ ngắn hơn có phá vỡ chỉ số CCI của một chu kỳ dài hơn hay không, và quyết định làm nhiều hoặc làm ít tùy thuộc vào hướng phá vỡ.
Lập luận cốt lõi của chiến lược này là:
Các quy tắc cụ thể cho việc làm nhiều hơn là:
Các quy tắc cụ thể của việc làm trống là:
Có thể thấy rằng chiến lược này sử dụng tính nhạy cảm của CCI ngắn hạn và tính ổn định của CCI dài hạn để xác định và theo dõi xu hướng.
Chiến lược này có những ưu điểm sau:
Chiến lược này cũng có một số rủi ro:
Giải pháp đối phó với rủi ro:
Những nơi mà chiến lược này có thể được tối ưu hóa hơn bao gồm:
Chiến lược này nói chung là một chiến lược theo dõi xu hướng đơn giản dựa trên các đợt phá vỡ chỉ số CCI trong thời gian dài và ngắn. Nó có thể xác định hiệu quả hướng xu hướng và theo dõi xu hướng. Đồng thời kiểm soát rủi ro bằng các phương tiện như dừng lỗ. Chiến lược này đơn giản, thực tế, điều chỉnh tham số linh hoạt, có thể được sử dụng như một chiến lược nhập cảnh cho giao dịch định lượng.
/*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)