Chiến lược theo xu hướng dựa trên chỉ báo CCI


Ngày tạo: 2023-11-24 10:53:07 sửa đổi lần cuối: 2023-11-24 10:53:07
sao chép: 0 Số nhấp chuột: 745
1
tập trung vào
1617
Người theo dõi

Chiến lược theo xu hướng dựa trên chỉ báo CCI

Tổng quan

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

Nguyên tắc chiến lược

Lập luận cốt lõi của chiến lược này là:

  1. Xác định hai chỉ số CCI, ci1 là 14 chu kỳ và ci2 là 56 chu kỳ
  2. Làm nhiều hơn khi ci1 vượt qua ci2
  3. Khi ci1 đi xuống, nó sẽ phá vỡ ci2.
  4. Sau khi tín hiệu giao dịch phát ra, xác định vị thế giữ bằng số ci1 và ci2

Các quy tắc cụ thể cho việc làm nhiều hơn là:

  1. Ci1 đeo trên ci2, tức là CCI ngắn đeo trên CCI dài
  2. Điều kiện dừng lỗ: ci1 < -50 và tỷ lệ biến đổi < 0 hoặc ci1 giảm dưới -100

Các quy tắc cụ thể của việc làm trống là:

  1. Tiếp theo là CCI ngắn và CCI dài
  2. Điều kiện dừng lỗ: ci1> 100 và tỷ lệ thay đổi > 0 hoặc ci2 trên 100

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.

Lợi thế chiến lược

Chiến lược này có những ưu điểm sau:

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

Rủi ro chiến lược

Chiến lược này cũng có một số rủi ro:

  1. Chỉ số CCI có khả năng nhận diện yếu đối với giao dịch ngang và chấn động
  2. CCI có thể bị lệch, dẫn đến tín hiệu giao dịch sai
  3. Điều kiện dừng lỗ không đúng cách có thể gây ra tổn thất lớn
  4. Thiết lập tham số không chính xác cũng có thể ảnh hưởng lớn đến lợi nhuận chiến lược

Giải pháp đối phó với rủi ro:

  1. Có thể kết hợp với các chỉ số khác để đánh giá và tránh giao dịch trong bối cảnh xung đột
  2. Tăng điều kiện lọc để tránh các tín hiệu sai lầm do CCI quay lưng trong thời gian dài
  3. Tối ưu hóa và thử nghiệm các điều kiện dừng khác nhau
  4. Lựa chọn sự kết hợp phù hợp của các tham số thông qua phản hồi và tối ưu hóa tham số

Hướng tối ưu hóa chiến lược

Những nơi mà chiến lược này có thể được tối ưu hóa hơn bao gồm:

  1. Thêm các chỉ số khác để tạo ra một hệ thống giao dịch SYSTEM hơn
  2. Kiểm tra chênh lệch lợi nhuận giữa các ngày trong tuần và các phiên
  3. Phương pháp học máy để tìm các tham số tốt hơn
  4. Điều chỉnh tham số theo đặc tính của các giống khác nhau
  5. Tối ưu hóa các điều kiện mở và giữ vị trí

Tóm tắt

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.

Mã nguồn chiến lược
/*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)