Đâ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á.
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í.
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)