
Ý tưởng cốt lõi của chiến lược này là sử dụng chỉ số CCI để xác định xu hướng thị trường và sử dụng chỉ số EMA để xử lý CCI một cách trơn tru, để thực hiện giao dịch theo xu hướng. Khi CCI vượt qua điểm mua, hãy làm nhiều hơn khi CCI vượt qua điểm bán, để đạt được mục đích theo xu hướng thị trường.
Tính toán chỉ số CCI. Chỉ số CCI được sử dụng để xác định xem giá cổ phiếu hiện tại đã bị mua quá mức hay bán quá mức bằng mức độ lệch của giá đóng cửa vào ngày hôm đó so với đường trung bình trong 20 ngày qua. Công thức là: ((typical price - 20 ngày SMA) / (0.015 * 20 ngày chênh lệch tiêu chuẩn giá điển hình).
Các chỉ số CCI được xử lý trơn tru EMA, có được đường cong CCI-EMA, để giảm sự dao động của chỉ số CCI, làm cho tín hiệu rõ ràng hơn.
Thiết lập điểm mua và bán của CCI. Khi CCI-EMA vượt qua điểm mua, làm nhiều; Khi CCI-EMA vượt qua điểm bán, làm trống.
Giữ vị trí cho đến khi CCI-EMA chạm vào điểm mua hoặc bán một lần nữa.
Sử dụng CCI để xác định xu hướng thị trường, kết hợp với các tín hiệu lọc giả của EMA, có thể theo dõi xu hướng thị trường hiệu quả.
Chỉ số CCI rất nhạy cảm với giá cả, có thể nhanh chóng nắm bắt sự biến đổi của xu hướng. Chỉ số EMA có thể làm giảm tỷ lệ báo cáo sai. Sử dụng cả hai cùng nhau, bạn có thể nắm bắt cơ hội ngay khi xu hướng bắt đầu.
Sử dụng chiến lược theo xu hướng để giảm tối đa số lần giao dịch, giảm chi phí giao dịch và mất điểm trượt.
Chiến lược này có hiệu quả tốt hơn và có khả năng hoạt động trong thực tế.
Chỉ số CCI có vấn đề về sự nhạy cảm quá mức với đường cong, EMA không thể loại bỏ hoàn toàn tất cả các tín hiệu giả, vẫn còn một số rủi ro báo cáo sai.
Xu hướng thuần túy theo chiến lược, dễ bị mất khi xu hướng dao động hoặc đảo ngược. Sử dụng các chỉ số đánh giá xu hướng phù hợp.
Chiến lược giao dịch hoàn toàn máy móc, không thể điều chỉnh các tham số một cách linh hoạt theo tình hình thị trường, có nguy cơ quá tối ưu.
Dữ liệu phản hồi không đầy đủ, không thể phản ánh hoàn toàn hiệu suất của ổ đĩa thực.
Tối ưu hóa các tham số của CCI, kiểm tra hiệu quả của các tham số với các chu kỳ khác nhau.
Tối ưu hóa các tham số EMA để tìm ra độ dài chu kỳ EMA tối ưu.
Thử nghiệm các kết hợp các tham số điểm mua bán khác nhau để tìm ra tham số tối ưu.
Kết hợp với các chỉ số khác để đánh giá xu hướng đảo ngược, đặt điểm dừng để tránh tổn thất mở rộng.
Thêm chức năng tối ưu hóa tham số tự động, tự động tìm kiếm các tham số tốt nhất cho các giống khác nhau.
Chiến lược này nói chung là một chiến lược giao dịch theo xu hướng đơn giản hơn. Nó sử dụng CCI để đánh giá xu hướng và nhạy cảm với sự thay đổi giá, phối hợp với EMA để tạo ra tín hiệu giao dịch. Chiến lược có một số lợi thế, nhưng cũng có một số rủi ro cần lưu ý.
/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("CCI with EMA Strategy", overlay=false, pyramiding=1, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.07)
length = input(20, minval=1)
src = input(close, title="Source")
cciSellPoint = input(0, title = 'CCI Sell Point', type = input.integer)
cciBuyPoint = input(0, title = 'CCI Buy Buy Point', type = input.integer)
lengthcci = input(12,"length cci ema", minval=1)
ma = sma(src, length)
cci = (src - ma) / (0.015 * dev(src, length))
cciema=ema(cci,lengthcci)
plot(cci, "CCI", color=#996A15)
plot(cciSellPoint, title = 'CCI Sell Point', color = color.red, linewidth = 1, style = plot.style_cross, transp = 35)
plot(cciBuyPoint, title = 'CCI Buy Point', color = color.green, linewidth = 1, style = plot.style_cross, transp = 35)
plot(cciema, title = 'CCI EMA', color = color.green, linewidth = 1, transp = 35)
band1 = hline(100, "Upper Band", color=#C0C0C0, linestyle=hline.style_dashed)
band0 = hline(-100, "Lower Band", color=#C0C0C0, linestyle=hline.style_dashed)
fill(band1, band0, color=#9C6E1B, title="Background")
startLongTrade= cciema >cciBuyPoint
startShortTrade= cciema <cciSellPoint
//exitLong = cciema <cciSellPoint
//exitShort = cciema >cciBuyPoint
strategy.entry("long",strategy.long, when = startLongTrade )
//strategy.close( "long", when=exitLong)
strategy.entry("short",strategy.short,when=startShortTrade )
//strategy.close("short", when=exitShort)