
Chiến lược động lực đa chu kỳ xác nhận đồ họa kỹ thuật là một hệ thống giao dịch dựa trên nhận dạng hình dạng của nhiều biểu đồ cổ điển và kết hợp với xác nhận động lực. Chiến lược này chủ yếu bằng cách nhận ra các hình dạng kỹ thuật phổ biến trong thị trường, chẳng hạn như đầu vai, đầu vai, đầu vai, hai đỉnh, hai đáy, hình tam giác (hình đối xứng, tăng, giảm), hình cờ, hình nón, v.v., và xác nhận tín hiệu nhập cảnh khi hình dạng phá vỡ. Chiến lược kết hợp khéo léo với chỉ số ATR để thiết lập mức dừng lỗ và giá trị động, kiểm soát rủi ro hiệu quả và khóa lợi nhuận.
Nguyên tắc cốt lõi của chiến lược là nhận diện các hình dạng đồ thị khác nhau thông qua một loạt các hàm điều kiện và xác nhận tín hiệu giao dịch khi giá vượt qua các mức quan trọng:
Nhận diện đầu/chân/chân: Xác định cấu trúc đặc trưng của hình dạng đầu vai bằng cách so sánh mối quan hệ vị trí tương đối của các điểm cao / thấp liên tiếp. Hình dạng đầu vai được hình thành khi cao điểm 1 lớn hơn cao điểm 0, 2, 3, 4 và cao điểm 0 nhỏ hơn cao điểm 2 và 3.
Nhận dạng hai đầu/hai đáy: Xác định hình dạng hai đỉnh và hai đáy bằng cách phân tích chuỗi điểm cao / thấp. Trong hình dạng hai đỉnh, điểm cao 1 cần lớn hơn điểm cao xung quanh; Trong hình dạng hai đáy, điểm thấp 1 cần nhỏ hơn điểm thấp xung quanh.
Nhận dạng hình tam giác:
Biểu tượng cờ / Biểu tượng cờ ba chữ: Xác định mô hình thay đổi liên tục bằng cách phân tích các điểm cao và thấp.
Chứng nhận tín hiệu giao dịch:
Quản lý rủi ro:
Nhận dạng hình thức có hệ thốngChiến lược: Bằng cách xác định hàm điều kiện rõ ràng, thực hiện nhận dạng tự động của nhiều hình dạng biểu đồ cổ điển, giảm sai lệch do phán đoán chủ quan.
Cơ chế xác nhận tín hiệuChiến lược không chỉ nhận ra hình dạng biểu đồ, mà còn yêu cầu giá phá vỡ mức quan trọng để xác nhận, giảm nguy cơ phá vỡ giả.
Quản lý rủi ro động: Sử dụng chỉ số ATR để thiết lập mức dừng và dừng động để kiểm soát rủi ro phù hợp hơn với sự biến động của thị trường.
Phạm vi đa dạngChiến lược bao gồm nhiều hình dạng biểu đồ cổ điển, tăng cơ hội giao dịch và thích ứng với các môi trường thị trường khác nhau.
Hiển thị trực quan: Chiến lược hiển thị trực quan các hình dạng được nhận biết trên biểu đồ thông qua hàm plotshape, giúp các nhà giao dịch hiểu và xác minh logic chiến lược.
Rủi ro và lợi nhuận hợp lý hơnChiến lược đặt 3 lần ATR làm điểm dừng, 1,5 lần ATR làm điểm dừng, tỷ lệ lợi nhuận rủi ro là 1:2, phù hợp với nguyên tắc quản lý rủi ro hiệu quả.
Tính chính xác nhận dạng hình dạng hạn chế: Các thuật toán nhận dạng hình dạng hiện tại tương đối đơn giản, có thể gây ra sai sót hoặc bỏ sót, đặc biệt là trong trường hợp thị trường có tiếng ồn lớn.
Độ nhạy tham sốCài đặt chu kỳ ATR và các cài đặt nhân của dừng lỗ, dừng lại có ảnh hưởng đáng kể đến hiệu suất chiến lược và cần được tối ưu hóa cho các thị trường và khung thời gian khác nhau.
Rủi ro đột phá giảMặc dù có các cơ chế xác nhận, nhưng vẫn có những vụ phá vỡ giả mạo trên thị trường, có thể dẫn đến tổn thất thương mại không cần thiết.
Nhận dạng dạng lặp lại: Một số hàm nhận dạng hình dạng trong mã hiện tại có logic tương tự (như đầu vai và hai đầu) có thể dẫn đến nhiều tín hiệu được kích hoạt trong cùng một tình huống thị trường, làm tăng tần suất giao dịch và chi phí.
Thiếu bộ lọc xu hướngChiến lược này không tính đến hướng của xu hướng thị trường tổng thể, có thể tạo ra tín hiệu đảo ngược trong xu hướng mạnh, dẫn đến giao dịch ngược.
Cách tránh rủi ro:
Cải thiện thuật toán nhận dạng hình dạng:
Thêm xác nhận số lượng giao dịch:
Trình lọc xu hướng:
Tối ưu hóa quản lý rủi ro:
Thêm bộ lọc thời gian:
Phân tích nhiều khung thời gian:
Những hướng tối ưu hóa này sẽ giúp cải thiện đáng kể tính ổn định và hiệu quả của chiến lược vì:
Chiến lược xác nhận hình ảnh kỹ thuật đa chu kỳ động lực là một hệ thống giao dịch có hệ thống, rõ ràng về quy tắc, tạo ra tín hiệu giao dịch bằng cách xác định nhiều hình dạng biểu đồ cổ điển và kết hợp với xác nhận đột phá. Chiến lược sử dụng chỉ số ATR để quản lý rủi ro động, thiết lập tỷ lệ lợi nhuận rủi ro hợp lý. Mặc dù phiên bản hiện tại của thuật toán nhận dạng hình dạng tương đối đơn giản, nhưng nó cung cấp nền tảng tốt để tối ưu hóa hơn nữa.
/*backtest
start: 2024-02-29 00:00:00
end: 2025-02-26 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Chart Pattern Strategy - Full Set", overlay=true)
// ATR settings for stop loss and take profit
atrLength = input.int(14, title="ATR Length")
atrValue = ta.atr(atrLength)
stopLoss = atrValue * 1.5 // Stop loss 1.5 ATR
takeProfit = atrValue * 3 // Take profit 3 ATR
// Head and Shoulders Detection
isHeadAndShoulders() =>
high[1] > high[2] and high[1] > high[0] and high[1] > high[3] and high[1] > high[4] and high[0] < high[2] and high[0] < high[3]
// Double Top Detection
isDoubleTop() =>
high[1] > high[2] and high[1] > high[0] and high[1] > high[3] and high[1] > high[4] and high[0] < high[2] and high[0] < high[3]
// Double Bottom Detection
isDoubleBottom() =>
low[1] < low[2] and low[1] < low[0] and low[1] < low[3] and low[1] < low[4] and low[0] > low[2] and low[0] > low[3]
// Symmetrical Triangle Detection
isSymmetricalTriangle() =>
high[2] > high[1] and low[2] < low[1] and high[3] < high[2] and low[3] > low[2]
// Ascending Triangle Detection (Bullish)
isAscendingTriangle() =>
high[2] < high[1] and low[2] > low[1] and high[3] < high[2] and low[3] > low[2]
// Descending Triangle Detection (Bearish)
isDescendingTriangle() =>
high[2] > high[1] and low[2] < low[1] and high[3] < high[2] and low[3] < low[2]
// Flags/Pennants Detection
isFlagPattern() =>
high[1] < high[0] and low[1] > low[0] and high[2] < high[1] and low[2] < low[1]
// Entry Logic (Confirmation based on Breakouts)
longSignal = (isHeadAndShoulders() or isDoubleBottom() or isAscendingTriangle()) and close > high[1]
shortSignal = (isDoubleTop() or isDescendingTriangle() or isFlagPattern()) and close < low[1]
// Plotting Chart Patterns on the Chart
plotshape(isHeadAndShoulders(), title="Head and Shoulders", location=location.abovebar, color=color.red, style=shape.labelup, text="HS")
plotshape(isDoubleTop(), title="Double Top", location=location.abovebar, color=color.red, style=shape.labelup, text="DT")
plotshape(isDoubleBottom(), title="Double Bottom", location=location.belowbar, color=color.green, style=shape.labeldown, text="DB")
plotshape(isSymmetricalTriangle(), title="Symmetrical Triangle", location=location.top, color=color.blue, style=shape.triangledown, text="ST")
plotshape(isAscendingTriangle(), title="Ascending Triangle", location=location.belowbar, color=color.green, style=shape.labelup, text="AT")
plotshape(isDescendingTriangle(), title="Descending Triangle", location=location.abovebar, color=color.red, style=shape.labeldown, text="DT")
plotshape(isFlagPattern(), title="Flag Pattern", location=location.abovebar, color=color.orange, style=shape.triangledown, text="Flag")
// Executing Trades based on Patterns
if (longSignal)
strategy.entry("Buy", strategy.long)
strategy.exit("Take Profit/Stop Loss", from_entry="Buy", stop=close - stopLoss, limit=close + takeProfit)
if (shortSignal)
strategy.entry("Sell", strategy.short)
strategy.exit("Take Profit/Stop Loss", from_entry="Sell", stop=close + stopLoss, limit=close - takeProfit)