CCI Dual Timeframe Trend Theo chiến lược

Tác giả:ChaoZhang, Ngày: 2023-11-24 10:53:07
Tags:

img

Tổng quan

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á.

Chiến lược logic

Logic cốt lõi của chiến lược này là:

  1. Định nghĩa hai CCI, ci1 là 14 giai đoạn, ci2 là 56 giai đoạn
  2. Khi ci1 vượt qua ci2, đi dài
  3. Khi ci1 phá vỡ dưới ci2, đi ngắn
  4. Sử dụng các giá trị của ci1 và ci2 để xác định lối ra sau khi tín hiệu kích hoạt

Các quy tắc cụ thể dài:

  1. ci1 phá vỡ trên ci2, CCI ngắn hơn trên CCI dài hơn
  2. Điều kiện dừng lỗ: ci1 <-50 và tỷ lệ thay đổi < 0 hoặc ci1 phá vỡ dưới -100

Các quy tắc cụ thể ngắn:

  1. ci1 phá vỡ dưới ci2, CCI ngắn hơn dưới CCI dài hơn
  2. Điều kiện dừng lỗ: ci1 > 100 và tỷ lệ thay đổi > 0 hoặc ci2 phá vỡ trên 100

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.

Ưu điểm

Những lợi thế của chiến lược này:

  1. Xác định hiệu quả xu hướng bằng cách sử dụng sức mạnh của chỉ số CCI
  2. Thiết kế CCI kép lọc một số thương mại tiếng ồn
  3. Sự kết hợp của các CCI dài và ngắn hạn kiểm soát rủi ro trong khi theo xu hướng
  4. Quy tắc chiến lược đơn giản và rõ ràng, dễ hiểu và thực hiện
  5. Có khả năng cấu hình cao, cả thời gian CCI và điều kiện dừng lỗ đều có thể được tùy chỉnh

Rủi ro

Ngoài ra còn có một số rủi ro:

  1. Khả năng yếu để xác định các thị trường có phạm vi và biến động bằng cách sử dụng CCI
  2. Sự khác biệt có thể xảy ra giữa CCI dài và ngắn hạn, gây ra tín hiệu sai
  3. Cài đặt stop loss không đúng có thể dẫn đến tổn thất lớn
  4. Điều chỉnh tham số không phù hợp cũng ảnh hưởng lớn đến lợi nhuận chiến lược

Giải pháp:

  1. Kết hợp các chỉ số khác để xác định tình trạng thị trường, tránh giao dịch trong thời kỳ biến động
  2. Thêm các bộ lọc để tránh lỗi từ sự khác biệt CCI
  3. Tối ưu hóa và thử nghiệm các mức dừng lỗ khác nhau
  4. Tìm các bộ tham số phù hợp thông qua backtesting và điều chỉnh

Hướng dẫn tối ưu hóa

Các lĩnh vực mà chiến lược có thể được tối ưu hóa thêm:

  1. Thêm thêm các chỉ số để xây dựng một hệ thống giao dịch có hệ thống hơn
  2. Phân biệt lợi nhuận thử nghiệm giữa các ngày trong tuần và các phiên
  3. Tìm kiếm các thông số tốt hơn bằng cách sử dụng máy học
  4. Các thông số điều chỉnh cho các sản phẩm khác nhau
  5. Tối ưu hóa các quy tắc nhập cảnh và xuất cảnh

Kết luận

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)

Thêm nữa