Chiến lược đột phá mạnh mẽ của CCI

Tác giả:ChaoZhang, Ngày: 2023-11-15 16:52:06
Tags:

img

Tổng quan

Chiến lược này dựa trên chỉ số kênh hàng hóa cổ điển (CCI) và chỉ kéo dài. Nó đi vào thị trường khi chỉ số CCI ở mức cực kỳ thấp (CCI <-150 hoặc ngưỡng được xác định bởi người dùng) và lấy lại sức mạnh (tức là CCI> CCI của nến trước), với bộ lọc trên sức mạnh của chính giá (tức là việc đóng thanh tín hiệu phải cao hơn một sự khác biệt nhất định - được cố định ở mức 0,25% - từ sự mở cửa).

Chiến lược kết thúc khi lệnh dừng lỗ được kích hoạt hoặc giá tăng trên dải trên CCI.

Mục tiêu là đạt được tỷ lệ cao các giao dịch có lợi nhuận (hơn 50%) thay vì nắm bắt toàn bộ thời gian của một xu hướng.

Chiến lược logic

  1. Xây dựng chỉ số CCI và băng tần sử dụng ta.sma ((() vàta.dev() các hàm.

  2. Sử dụng đầu vào để chọn ngày bắt đầu cho backtest.

  3. Tín hiệu nhập cảnh: CCI vượt qua dưới dải dưới và bắt đầu tăng.

  4. Khả năng 1: CCI tăng trên dải trên, lấy lợi nhuận.

  5. Exit 2: Giá giảm xuống dưới mức dừng lỗ, cắt lỗ.

  6. Chiến lược chỉ kéo dài dựa trên sức mạnh của CCI, với các điểm dừng để kiểm soát rủi ro.

Phân tích lợi thế

Chiến lược có những lợi thế sau:

  1. Xác định mức mua quá mức / bán quá mức với CCI để tận dụng các sự đảo ngược.

  2. Chỉ có định hướng dài tránh rủi ro quá mức từ các giao dịch xấu.

  3. Bộ lọc sức mạnh giá đảm bảo hỗ trợ được hình thành trước khi nhập cảnh.

  4. Cơ chế dừng lỗ giới hạn lỗ trên mỗi giao dịch và quản lý vốn.

  5. Các thông số backtest linh hoạt để điều chỉnh bộ lọc nhập.

  6. Tỷ lệ thắng lợi cao phù hợp với các nhà đầu tư tập trung vào quản lý rủi ro.

  7. Logic rõ ràng và thực hiện đơn giản.

Phân tích rủi ro

Ngoài ra còn có một số rủi ro:

  1. Chỉ đi dài có thể bỏ lỡ xu hướng giảm ngắn hạn.

  2. Điều chỉnh tham số CCI kém dẫn đến thất bại.

  3. Stop loss quá lỏng lẻo không giới hạn tổn thất.

  4. Xu hướng tăng mạnh mẽ thổi qua các điểm dừng gây ra tổn thất lớn.

  5. Tần suất giao dịch cao làm tăng chi phí giao dịch.

Các giải pháp có thể:

  1. Tối ưu hóa các thông số CCI để tìm ra các giá trị tốt nhất.

  2. Điều chỉnh dừng lỗ để cân bằng rủi ro và trượt.

  3. Quản lý tần suất nhập cảnh xem xét chi phí.

  4. Kết hợp với các bộ lọc xu hướng và phạm vi.

Cơ hội gia tăng

Một số cách để cải thiện chiến lược:

  1. Thực hiện dừng động dựa trên biến động thị trường.

  2. Thêm các bộ lọc như MACD để tránh dừng quá rộng.

  3. Tích hợp phía ngắn khi CCI quá nóng.

  4. Xem xét chi phí, đặt mục tiêu lợi nhuận tối thiểu.

  5. Tối ưu hóa các thông số cho khung thời gian.

  6. Máy học để tự động điều chỉnh tham số.

  7. Thêm kích thước vị trí cho phân bổ năng động.

Kết luận

Tóm lại, chiến lược chỉ dài này tận dụng mức CCI mua quá mức / bán quá mức với bộ lọc sức mạnh giá và dừng lỗ. Nó cung cấp việc thực hiện dễ dàng, kiểm soát rủi ro tốt và tỷ lệ thắng cao. Những hạn chế về chỉ dài và dừng cố định có thể được giải quyết thông qua tối ưu hóa tham số, nhập ngắn, dừng năng động vv. Chiến lược phù hợp với các nhà đầu tư tìm kiếm tỷ lệ thắng cao và quản lý rủi ro thích hợp.


/*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')



Thêm nữa