Chiến lược đảo ngược CCI 4 giờ

Tác giả:ChaoZhang, Ngày: 2023-10-13 15:29:05
Tags:

Tổng quan

Đây là một chiến lược giao dịch đảo ngược dựa trên chỉ số CCI. Nó sẽ mở các giao dịch đảo ngược khi chỉ số CCI hiển thị mức mua quá mức hoặc bán quá mức. Nhìn chung, chiến lược này sử dụng các tính năng mua quá mức và bán quá mức của chỉ số CCI để nắm bắt các cơ hội đảo ngược giá.

Chiến lược logic

Thứ nhất, chiến lược này dựa trên chỉ số CCI. Công thức chỉ số CCI là:

CCI = (Giá điển hình - Trung bình di chuyển đơn giản) / (0,015 * Phản lệch chuẩn)

Ở đâu? Giá điển hình = (Tối cao nhất + thấp nhất + đóng) / 3 Đường trung bình di chuyển đơn giản = Đường trung bình di chuyển của Giá điển hình trong N ngày qua
Phân lệch tiêu chuẩn = gốc vuông của sự khác biệt của Giá điển hình trong N ngày qua

Chiến lược này sử dụng chỉ số CCI 11 giai đoạn và -150 được đặt là mức bán quá mức, trong khi 150 là mức mua quá mức.

Khi mỗi thanh đóng, chỉ số CCI 11 giai đoạn sẽ được kiểm tra. Nếu CCI vượt dưới -150, một tín hiệu dài được tạo ra. Nếu CCI vượt trên 150, một tín hiệu ngắn được tạo ra.

Sau khi nhận được tín hiệu, lệnh thị trường sẽ được sử dụng để mở vị trí.

Phân tích lợi thế

  1. Sử dụng chỉ số CCI có thể nắm bắt hiệu quả các cơ hội đảo ngược giá
  2. Các thông số CCI có thể điều chỉnh để tối ưu hóa
  3. Mục tiêu lợi nhuận cố định và tỷ lệ dừng lỗ kiểm soát rủi ro hiệu quả
  4. Định nghĩa chiến lược đơn giản và rõ ràng, dễ hiểu và thực hiện

Phân tích rủi ro

  1. Chỉ số CCI có thể tạo ra nhiều tín hiệu sai, tín hiệu đầu vào có thể không đáng tin cậy
  • Giải pháp: Tối ưu hóa các tham số CCI, thêm bộ lọc với các chỉ số khác
  1. Mục tiêu lợi nhuận cố định và tỷ lệ dừng lỗ có thể không phù hợp với các sản phẩm khác nhau
  • Giải pháp: Thêm mục tiêu lợi nhuận động và dừng lỗ
  1. Chiến lược chỉ dựa vào CCI, nguy cơ không hiệu quả cao
  • Giải pháp: Kết hợp nhiều chỉ số để cải thiện độ bền
  1. Không tính đến chi phí giao dịch, màn trình diễn trực tiếp có thể bị ảnh hưởng
  • Giải pháp: Thêm kiểm soát trượt, giảm tần suất giao dịch

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

  1. Tối ưu hóa các tham số CCI để tìm kết hợp tham số tốt hơn
  2. Thêm các chỉ số khác như MACD, KDJ để lọc tín hiệu
  3. Phát triển mục tiêu lợi nhuận năng động và dừng lỗ thay vì tỷ lệ cố định
  4. Tối ưu hóa chiến lược để giảm tần suất giao dịch, giảm tác động đến chi phí giao dịch
  5. Thực hiện tối ưu hóa backtesting để tìm kết hợp tham số tốt nhất cho giao dịch trực tiếp

Tóm lại

Chiến lược đảo ngược CCI 4 giờ là một chiến lược đơn giản sử dụng chỉ số CCI cho giao dịch đảo ngược. Nó có lợi thế về logic rõ ràng và dễ thực hiện. Nhưng nó cũng có những điểm yếu như tín hiệu CCI không đáng tin cậy và mục tiêu lợi nhuận / dừng lỗ không linh hoạt. Những cải tiến hơn nữa có thể được thực hiện bằng cách tối ưu hóa các thông số CCI, thêm các chỉ số lọc, phát triển các lối ra năng động, v.v. Nhìn chung chiến lược này cung cấp một ý tưởng dựa trên CCI cho giao dịch định lượng, nhưng đòi hỏi tối ưu hóa thêm trước khi áp dụng trực tiếp.


/*backtest
start: 2023-09-12 00:00:00
end: 2023-10-12 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("4H CCI Strategy", overlay=true)
length = input( 11 )
overSold = input( -150 )
overBought = input( +150 )
price1 = high
price2 = low
ucci = cci(price1, length)
dcci = cci(price2, length)
vcci = cci(ohlc4, 11)

resCustom = input(title="Timeframe", defval="15")
Length = input(16, minval=1)
xPrice = request.security(syminfo.tickerid, resCustom, hlc3)
xvnoise = abs(xPrice - xPrice[1])
nfastend = 0.666
nslowend = 0.0645
nsignal = abs(xPrice - xPrice[Length])
nnoise = sum(xvnoise, Length)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) 
nAMA = nz(nAMA[1]) + nsmooth * (xPrice - nz(nAMA[1]))
basis1 = nAMA
slope = change(basis1,1)

if (not na(vcci))
    if (crossover(dcci, overSold))
        strategy.entry("CCILE", strategy.long, comment="CCILE")
        strategy.exit("exit", "CCILE", profit = 0.01, loss = 0.005)
    if (crossunder(ucci, overBought))
        strategy.entry("CCISE", strategy.short, comment="CCISE")
        strategy.exit("exit", "CCISE", profit = 0.01, loss = 0.005)
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

Thêm nữa