
Chiến lược này dựa trên chỉ số kênh hàng hóa cổ điển ((CCI), chỉ làm nhiều đầu. Khi chỉ số CCI ở mức rất thấp ((CCI <-150 hoặc ngưỡng định nghĩa của người dùng) và lấy lại sức mạnh ((CCI> CCI của đường K gốc trước), đồng thời lọc các đợt tăng cường sức mạnh giá (có nghĩa là giá đóng cửa đường K phát tín hiệu phải cao hơn một mức giá mở cửa nhất định - cố định là 0.25%), hệ thống sẽ đi vào thị trường.
Chiến lược này được sử dụng để có được tỷ lệ thắng cao (trên 50%), thay vì theo đuổi chiều dài toàn bộ xu hướng. Do đó, nó được sử dụng cho các nhà giao dịch không thể chịu đựng khi nhìn thấy lỗ tiềm năng.
Sử dụng hàm ta.sma () và ta.dev () để xây dựng chỉ số CCI và dải giữa các dải.
Sử dụng input để chọn ngày bắt đầu giao dịch và thiết lập cửa sổ phản hồi.
Điều kiện nhập cảnh: CCI dưới đường giảm và bắt đầu tăng, đồng thời yêu cầu giá đóng cửa đường K của tín hiệu cao hơn giá mở cửa 0,25%.
Điều kiện 1: CCI lên đường, dừng và rời khỏi sân.
Điều kiện xuất cảnh 2: Bị đường dừng lỗ, thua lỗ ra khỏi sân.
Chiến lược chỉ là làm nhiều hơn, chọn thời gian nhập cảnh dựa trên cường độ chỉ số CCI, đồng thời sử dụng rủi ro kiểm soát lỗ.
Chiến lược này có những ưu điểm sau:
Sử dụng chỉ số CCI để xác định tình trạng quá mua và quá bán để nắm bắt cơ hội đảo ngược hiệu quả.
Chỉ cần làm nhiều hướng, tránh rủi ro quá nhiều khi sử dụng sai.
Sử dụng lực lọc giá để đảm bảo giá đã được hỗ trợ khi nhập cảnh.
Cơ chế ngăn chặn thiệt hại kiểm soát tổn thất đơn lẻ, quản lý tài chính hiệu quả.
Các tham số phản hồi linh hoạt, có thể điều chỉnh các điều kiện lọc vào.
Tỷ lệ thắng cao, phù hợp với các nhà đầu tư tập trung vào quản lý vốn.
Các chiến lược được xây dựng rõ ràng, các mã được thực hiện đơn giản và dễ hiểu.
Chiến lược này cũng có những rủi ro:
Chỉ cần đi theo nhiều hướng, bạn có thể dễ dàng bỏ lỡ xu hướng giảm của đường ngắn.
Các tham số CCI được thiết lập không chính xác có thể dẫn đến thất bại.
Cài đặt dừng lỗ quá lỏng lẻo, không thể kiểm soát lỗ hiệu quả.
Các nhà đầu tư đã có những bước đi rất khó khăn trong việc thực hiện các giao dịch với các nhà đầu tư.
Tần suất giao dịch quá cao gây ra áp lực chi phí giao dịch.
Các biện pháp quản lý rủi ro:
Tối ưu hóa tham số CCI, tìm giá trị tối ưu
Điều chỉnh mức dừng để tìm sự cân bằng giữa rủi ro và xác suất phá vỡ lệnh dừng.
Ghi chú chi phí giao dịch, kiểm soát tần suất truy cập.
Kết hợp xu hướng và phân khúc, tránh giao dịch một chiều.
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Sử dụng dừng động, điều chỉnh khoảng cách dừng theo mức độ biến động của thị trường.
Kết hợp các chỉ số như MACD, tránh dừng lỗ quá nhẹ.
Tăng cơ hội bán hàng, xem xét việc bán tháo khi chỉ số cc quá nóng.
Cân nhắc chi phí giao dịch và thiết lập khoảng cách dừng tối thiểu.
Các tham số tối ưu hóa được kết hợp với khung thời gian chiến lược để tìm kiếm sự kết hợp tốt nhất.
Sử dụng phương pháp học máy để tự động tối ưu hóa các tham số.
Thêm mô-đun quản lý tài chính, điều chỉnh vị thế động.
Nói tóm lại, chiến lược này sử dụng tính năng mua quá mức của chỉ số CCI, làm nhiều hơn khi giá tạo ra sự hỗ trợ, theo đuổi giao dịch có tỷ lệ thắng cao bằng cách kiểm soát rủi ro bằng cách dừng lỗ. Ưu điểm của chiến lược là hoạt động đơn giản và dễ dàng, kiểm soát rủi ro.
/*backtest
start: 2022-11-08 00:00:00
end: 2023-11-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title='CCI High Performance long only', overlay=false )
src = input(close)
length = input.int(20, title='Period', minval=1)
lossp = input.float(8, title='Stop Loss percentage', minval=0.5, step=0.5)
scart = input.float(0.25, title='Close of the signal bar higher than Open %', minval = 0)
upperline = input.int(150, title='Upper Band', minval=0, step=10)
lowline = input.int(-150, title='Low Band', maxval=0, step=10)
// construction of CCI (not on close but in totalprice) and of bands
ma = ta.sma(src, length)
cci = (src - ma) / (0.015 * ta.dev(src, length))
plot(cci, 'CCI', color=color.new(#996A15, 0))
band1 = hline(upperline, 'Upper Band', color=#C0C0C0, linestyle=hline.style_dashed)
band0 = hline(lowline, 'Lower Band', color=#C0C0C0, linestyle=hline.style_dashed)
fill(band1, band0, color=color.new(#9C6E1B, 90), title='Background')
// === INPUT BACKTEST RANGE ===
fromMonth = input.int(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromDay = input.int(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromYear = input.int(defval = 2016, title = "From Year", minval = 1970)
thruMonth = input.int(defval = 1, title = "Thru Month", minval = 1, maxval = 12)
thruDay = input.int(defval = 1, title = "Thru Day", minval = 1, maxval = 31)
thruYear = input.int(defval = 2112, title = "Thru Year", minval = 1970)
// === FUNCTION EXAMPLE limit for backtest ===
start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
//ENTRY CONDITIONS
// strategy: enter when CCI is under the low line and starts increasing. The filter is that the signal candle should mark a close higher than a x-percent
// (0.25%) of the open
// Exit when either when it reaches the target of a prices highest than high level of CCI or fixed stop loss (in percentage)
scart_level = open * (1+scart/100)
entryl = cci[1] < lowline[1] and cci > cci[1] and close > scart_level and window()
exit1 = cci> upperline
strategy.entry('Long', strategy.long, when=entryl)
strategy.close('Long', when=exit1, comment='target')
// money management (only stop loss)
losspel = strategy.position_avg_price * (1 - lossp / 100)
fixed_stop_long = close < losspel
strategy.close('Long', when=fixed_stop_long, comment='Stop Loss')