Chiến lược giao dịch đánh bắt cá đáy CCI mở rộng thích nghi cho hàng hóa

Tác giả:ChaoZhang, Ngày: 2023-12-21 14:30:03
Tags:

img

Tổng quan

Chiến lược này dựa trên chỉ số Commodity Channel Index (CCI) và sử dụng các mức nhập khẩu thích nghi năng động để xác định thời gian đảo ngược xu hướng, trong khi sử dụng lệnh dừng lỗ để khóa lợi nhuận. Tên chiến lược Extended Adaptive CCI Bottom Fishing Trading Strategy for Commodities nắm bắt các khía cạnh chính của chiến lược này: sử dụng chỉ số CCI để xác định các khu vực bán quá mức để đánh bắt cơ hội đảo ngược, và áp dụng các mức nhập khẩu thích nghi để tối ưu hóa thời gian nhập khẩu.

Chiến lược logic

Chỉ số cốt lõi là CCI, được sử dụng để phát hiện các vùng bán quá mức, do đó gợi ý về cơ hội đảo ngược xu hướng. Ngoài ra, mức độ của các khu vực bán quá mức CCI khác nhau trên các công cụ và môi trường thị trường khác nhau. Do đó, chiến lược này có cách tiếp cận "nhìn xa", kiểm tra các mức CCI thấp nhất trong một số thời gian xem lại nhất định, để thiết lập động mức nhập CCI mua. Nếu CCI thấp nhất trong 40 ngày qua là trên -90, thì -90 trở thành ngưỡng khu vực bán quá mức mới, v.v. Thiết kế thích nghi này cho phép các mức nhập năng động phù hợp với các điều kiện thị trường khác nhau, theo đuổi các mục nhập bảo thủ hơn trong các xu hướng giảm mạnh trong khi các mục nhập tích cực hơn trong các thị trường giới hạn phạm vi.

Đặc biệt, mức tín hiệu mua CCI mặc định là -145. Chiến lược sau đó kiểm tra các chỉ số CCI thấp nhất trong 40 ngày qua, 50 ngày trở lại khác nhau. Nếu CCI thấp nhất nằm trên mức tiếp theo như -90, thì -90 trở thành mức nhập cảnh mới. Và như vậy, mức nhập cảnh có thể chuyển đổi giữa -145 / -90 / -70 / -50 / -4 / 0 / +25 / +50 / +70 một cách năng động. Một tín hiệu nhập cảnh dài được kích hoạt khi CCI giảm xuống dưới mức tương ứng.

Ngoài ra, một lệnh dừng lỗ được sử dụng để khóa lợi nhuận, với mức dừng tăng lên cùng với giá.

Phân tích lợi thế

  • Cách tiếp cận rõ ràng và đáng tin cậy để sử dụng CCI để phát hiện các khu vực bán quá mức
  • Thiết kế thích nghi của các mức nhập cảnh cho phép chiến lược tự động phù hợp với môi trường thị trường khác nhau
  • Trailing stop loss giúp khóa lợi nhuận hiệu quả

So với các mức nhập khẩu cố định, thiết kế năng động như vậy cho phép thời gian nhập khẩu được tối ưu hóa. Theo đuổi các mục nhập bảo thủ hơn trong các xu hướng giảm mạnh làm giảm rủi ro, trong khi các mục nhập thấp hơn trong các thị trường giới hạn phạm vi cho phép nắm bắt nhiều cơ hội hơn. Điều này làm tăng khả năng thích nghi của chiến lược.

CCI chính nó là một chỉ số rõ ràng và đáng tin cậy để xác định mức mua quá mức / bán quá mức. Lý thuyết của việc đánh giá sự đảo ngược xu hướng dựa trên CCI đã được chứng minh. Kết hợp với thiết kế bước vào năng động, lợi thế tổng thể của chiến lược này là đáng kể.

Phân tích rủi ro

  • CCI không hoàn hảo và có một số thuộc tính chậm trễ.
  • Điều chỉnh năng động các mức nhập cảnh cũng không thể phù hợp hoàn hảo với những thay đổi trong môi trường thị trường.
  • Sự biến động cao trên thị trường hàng hóa.

Khả năng tìm ra các điểm đảo ngược xu hướng có một số thuộc tính chậm trễ. Thời gian vào có thể không chính xác trong các đợt tăng giá đột ngột hoặc sụp đổ. Ngoài ra, cơ chế thích nghi có thể không hoàn toàn phù hợp với môi trường thị trường hiện tại, dẫn đến các mục nhập không tối ưu. Cuối cùng, biến động cao trên thị trường hàng hóa có thể gây ra tổn thất lớn nếu các thông số dừng lỗ không được đặt đúng cách.

Hướng dẫn cải thiện

  • Tối ưu hóa các thông số CCI và thời gian làm mịn, hiệu quả thử nghiệm của các chiều dài CCI khác nhau
  • Kiểm tra nhiều loại cấp nhập cảnh hơn, tìm các giá trị mặc định tốt hơn hoặc thiết kế thích nghi
  • Kiểm tra các thông số dừng lỗ khác nhau, tăng đúng phạm vi dừng lỗ để phù hợp với các thuộc tính biến động cao của thị trường hàng hóa

Chủ yếu là CCI, thiết kế cấp độ đầu tiên và các tham số dừng lỗ có thể được cải thiện.

Tóm lại

Chiến lược này kết hợp logic sử dụng CCI để phát hiện các khu vực mua quá mức / bán quá mức và thiết kế cấp nhập khẩu thích nghi năng động để nắm bắt sự đảo ngược xu hướng. So với các thông số cố định, các mức nhập khẩu năng động cải thiện đáng kể khả năng thích nghi. Mô hình nắm bắt đảo ngược nhập khẩu này với stop loss sau có thể nắm bắt các cơ hội với động lực mạnh và cắt giảm lỗ trong thời gian. Với các thông số được cấu hình đúng cách, chiến lược này thể hiện khả năng tồn tại và độ bền. Những cải tiến hơn nữa có thể được thực hiện bằng cách tiếp tục tối ưu hóa các thông số CCI và các quy tắc cấp nhập khẩu để đạt được sự ổn định và lợi nhuận cao hơn.


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

//@version=5
strategy("Extended Adaptive CCI Entry Strategy for Commodities", shorttitle="Ext_Adaptive_CCI_Entry_Com", overlay=true)

// Inputs
cciLength = input(20, title="CCI Period")
defaultCCIEntryOversold = input(-145, title="Default CCI Entry Oversold Level")
adaptiveCCIEntryLevel90 = input(-90, title="Adaptive CCI Entry Level for 40 Days")
adaptiveCCIEntryLevel70_50Days = input(-70, title="Adaptive CCI Entry Level for 50 Days")
adaptiveCCIEntryLevel50 = input(-50, title="Adaptive CCI Entry Level for 60 Days")
adaptiveCCIEntryLevel4 = input(-4, title="Adaptive CCI Entry Level for 90 Days")
adaptiveCCIEntryLevel0 = input(0, title="Adaptive CCI Entry Level for 120 Days")
adaptiveCCIEntryLevel25 = input(25, title="Adaptive CCI Entry Level for 140 Days")
adaptiveCCIEntryLevel50_160Days = input(50, title="Adaptive CCI Entry Level for 160 Days")
adaptiveCCIEntryLevel70_180Days = input(70, title="Adaptive CCI Entry Level for 180 Days")
lookback40 = input(40, title="Lookback Period for -90 Level")
lookback50 = input(50, title="Lookback Period for -70 Level")
lookback60 = input(60, title="Lookback Period for -50 Level")
lookback90 = input(90, title="Lookback Period for -4 Level")
lookback120 = input(120, title="Lookback Period for 0 Level")
lookback140 = input(140, title="Lookback Period for +25 Level")
lookback160 = input(160, title="Lookback Period for +50 Level")
lookback180 = input(180, title="Lookback Period for +70 Level")

// Indicator Calculation
cci = ta.cci(close, cciLength)

// Determine adaptive entry level based on lookback periods
var float entryLevel = defaultCCIEntryOversold // Initialize with the default level
if ta.lowest(cci, lookback40) > adaptiveCCIEntryLevel90
    entryLevel := adaptiveCCIEntryLevel90
if ta.lowest(cci, lookback50) > adaptiveCCIEntryLevel70_50Days
    entryLevel := adaptiveCCIEntryLevel70_50Days
if ta.lowest(cci, lookback60) > adaptiveCCIEntryLevel50
    entryLevel := adaptiveCCIEntryLevel50
if ta.lowest(cci, lookback90) > adaptiveCCIEntryLevel4
    entryLevel := adaptiveCCIEntryLevel4
if ta.lowest(cci, lookback120) > adaptiveCCIEntryLevel0
    entryLevel := adaptiveCCIEntryLevel0
if ta.lowest(cci, lookback140) > adaptiveCCIEntryLevel25
    entryLevel := adaptiveCCIEntryLevel25
if ta.lowest(cci, lookback160) > adaptiveCCIEntryLevel50_160Days
    entryLevel := adaptiveCCIEntryLevel50_160Days
if ta.lowest(cci, lookback180) > adaptiveCCIEntryLevel70_180Days
    entryLevel := adaptiveCCIEntryLevel70_180Days

// Entry Condition
longCondition = cci < entryLevel

// Entry and Exit
if (longCondition)
    strategy.entry("Long", strategy.long, qty=1)
    alert("Long entry executed at " + str.tostring(close), alert.freq_once_per_bar)

trailOffset = input(10.0, title="Trailing Stop Offset in USD")
strategy.exit("Trailing Stop", "Long", trail_offset = trailOffset, trail_price = close)
if (close < entryLevel - trailOffset)
    alert("Long position closed at " + str.tostring(close), alert.freq_once_per_bar)

// Plotting
plot(series=cci, color=color.purple, title="CCI")
hline(price=defaultCCIEntryOversold, color=color.red, title="Default CCI Entry Oversold Level")
hline(price=adaptiveCCIEntryLevel90, color=color.orange, title="CCI -90 Level (40 Days)")
hline(price=adaptiveCCIEntryLevel70_50Days, color=color.yellow, title="CCI -70 Level (50 Days)")
hline(price=adaptiveCCIEntryLevel50, color=color.green, title="CCI -50 Level (60 Days)")
hline(price=adaptiveCCIEntryLevel4, color=color.blue, title="CCI -4 Level (90 Days)")
hline(price=adaptiveCCIEntryLevel0, color=color.purple, title="CCI 0 Level (120 Days)")
hline(price=adaptiveCCIEntryLevel25, color=color.aqua, title="CCI +25 Level (140 Days)")
hline(price=adaptiveCCIEntryLevel50_160Days, color=color.black, title="CCI +50 Level (160 Days)")
hline(price=adaptiveCCIEntryLevel70_180Days, color=color.gray, title="CCI +70 Level (180 Days)")


Thêm nữa