
Chiến lược này là một chiến lược giao dịch định lượng đường dài ngắn dựa trên lý thuyết phá vỡ. Nó đánh giá xem có phá vỡ hay không bằng cách tính toán giá đóng cửa cao nhất trong 100 ngày giao dịch gần nhất. Nếu giá đóng cửa trong ngày gần nhất vượt quá giá đóng cửa cao nhất trong 100 ngày trước đó, sẽ phát ra tín hiệu mua. Sau khi vào vị trí nhiều đầu, sẽ buộc phải dừng lỗ ở mức bằng phẳng sau 25 ngày giao dịch.
Lý luận cốt lõi của chiến lược này được dựa trên lý thuyết đột phá trong phân tích kỹ thuật. Lý thuyết đột phá cho rằng khi giá vượt quá mức cao nhất hoặc thấp nhất trong khoảng thời gian trước đó, thị trường sẽ chuyển hướng và có thể đi vào xu hướng tăng hoặc giảm mới.
Cụ thể, chiến lược này được thực hiện bằng cách gọi hàm cắm trong của Pine Script.ta.highest(), tính giá đóng cửa cao nhất trong 100 bar qua. Sau đó so sánh giá đóng cửa của dòng K hiện tại có cao hơn giá đóng cửa cao nhất không. Nếu giá đóng cửa vượt qua giá đóng cửa cao nhất trong 100 ngày và có sự phá vỡ về phía trên, sẽ tạo ra tín hiệu mua.
Một khi vào vị trí nhị phân, chiến lược sẽ thiết lập một điều kiện dừng lỗ bằng phẳng.ta.barssince()Hàm thống kê vào số lượng bar sau khi làm nhiều, khi số lượng bar vượt quá 25, sẽ bắt buộc dừng lỗ bằng phẳng.
Lý luận của chiến lược này có thể được tóm tắt như sau:
Ưu điểm lớn nhất của chiến lược này là nắm bắt các điểm biến đổi của xu hướng giá, có tỷ lệ thành công giao dịch theo chiều hướng cao. Ngoài ra, các thiết lập logic dừng lỗ cũng có thể kiểm soát hiệu quả tổn thất đơn lẻ.
Những lợi thế cụ thể có thể được tóm tắt như sau:
1. Giao dịch theo tiến độ, tỷ lệ thành công cao hơn
Lý thuyết đột phá cho rằng giá vượt qua khu vực giá quan trọng, đại diện cho xu hướng mới. Chiến lược này được thiết kế dựa trên lý thuyết này, do đó có xác suất cao hơn để bắt kịp thời điểm giá đảo ngược và thực hiện giao dịch theo chiều hướng.
2. Rủi ro có thể kiểm soát được, có cơ chế ngăn chặn thiệt hại
Chiến lược đặt ra một cơ chế dừng lỗ sau 25 ngày giao dịch, có thể kiểm soát tổn thất đơn lẻ trong một phạm vi nhất định, tránh tổn thất lớn và kiểm soát rủi ro tổng thể.
3. Tích hợp cho các vị trí trung và dài.
Thời gian giữ vị trí của chiến lược mặc định là 25 ngày giao dịch, khoảng 1 tháng. Đây là khoảng thời gian giữ vị trí phù hợp đối với chiến lược đường dài và trung bình, không gây ra whipsaw quá ngắn và không tăng rủi ro quá lâu.
4. Các tham số ít hơn và dễ dàng tối ưu hóa
Các tham số chính của chiến lược này chỉ có hai giai đoạn cửa sổ đột phá và thời gian giữ vị trí, ít tham số dễ dàng kiểm tra và tối ưu hóa để tìm tham số tối ưu, chi phí hoạt động trên ổ đĩa thấp.
5. Có thể chuyển đổi giữa nhiều giống
Chiến lược không sử dụng các chỉ số riêng biệt cho một loại cụ thể, logic giao dịch của nó áp dụng cho nhiều loại như chỉ số cổ phiếu, ngoại hối, hàng hóa và tiền điện tử, có thể chuyển đổi giữa các loại khác nhau tùy theo tình hình thị trường, tăng khả năng thích ứng của chiến lược.
Mặc dù có những lợi thế như trên, chiến lược này cũng có những rủi ro trong thực tế, bao gồm:
1. Rủi ro bị mắc kẹt
Chiến lược này không thiết lập các cơ chế dừng di chuyển hoặc theo dõi dừng. Nếu xu hướng đi vào không được hình thành, hoặc phá vỡ thực sự chỉ là phá vỡ giả, thì nó dễ bị đặt vào điểm dừng. Đây là điểm rủi ro lớn nhất của chiến lược.
2. Các tham số có thể cần được tối ưu hóa
Các tham số mặc định không nhất thiết phải là tham số tối ưu, quá trình thực có thể cần phải tìm các tham số cấu hình phù hợp với giống cụ thể và môi trường thị trường thông qua phương pháp tối ưu hóa, điều này sẽ làm tăng công việc điều chỉnh và theo dõi chiến lược.
3. Hiệu quả có liên quan đến thị trường
Chiến lược này phụ thuộc quá nhiều vào xu hướng, hoạt động kém trong thị trường thanh toán, có khả năng thích ứng thấp với môi trường thị trường khác nhau. Nếu gặp phải thị trường xung đột, thường xuyên bị đặt hoặc kích hoạt dừng lỗ, lợi nhuận có thể không ổn định.
Để chiến lược này có thể đạt được hiệu suất ổn định hơn trong thực tế, nó có thể được tối ưu hóa và cải tiến trong các khía cạnh sau:
1. Tăng cơ chế dừng lỗ di động
Thêm một logic theo dõi dừng lỗ, theo dõi mức lợi nhuận trên giấy vị trí, thiết lập một điểm dừng lỗ di động để giới hạn mức lỗ tối đa cho mỗi giao dịch. Điều này có thể làm giảm đáng kể rủi ro cá nhân.
2. Điều chỉnh tham số theo điều kiện thị trường
Có thể thiết lập một danh sách phạm vi hoặc giá trị cho hai tham số lớn của chiến lược này (thời gian phá vỡ và thời gian giữ vị trí) và động thiết lập giá trị tham số dựa trên sức mạnh tương đối của thị trường (ví dụ: bằng cách tính toán sử dụng chỉ số ATR) để tối ưu hóa tham số hơn nữa.
3. Kết hợp các quy tắc đánh giá xu hướng
Giảm tối đa rủi ro được đặt trong trường hợp xu hướng không rõ ràng hoặc phá vỡ giả. Có thể kết hợp với kết quả phân tích xu hướng trước đó (như phán đoán bằng mắt hoặc phân tích định lượng), tham gia vào giao dịch khi phân tích xác định xu hướng rõ ràng hơn.
4. Thử nghiệm các giống và môi trường thị trường khác nhau
Thử nghiệm các tham số và quy tắc chiến lược tối ưu hóa trong nhiều loại (như chỉ số cổ phiếu, hàng hóa, ngoại hối và tiền điện tử) và các khu vực giao dịch (như đường nắng, 60 phút, v.v.), thích ứng với môi trường thị trường rộng hơn, tăng sự ổn định.
Chiến lược đảo ngược lỗ hổng đột phá này rất đơn giản, có khả năng đánh giá và nắm bắt xu hướng mạnh mẽ, có thể định vị vị trí trống nhiều cách hiệu quả và có lợi nhuận liên tục. Chúng tôi đã phân tích mã hóa nó, tìm ra ưu điểm và điểm rủi ro của chiến lược và đưa ra các khuyến nghị để cải thiện hơn nữa sự ổn định và thực tế của chiến lược.
/*backtest
start: 2023-01-29 00:00:00
end: 2024-02-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © All_Verklempt
//@version=5
strategy("Breakout Strategy", overlay=true)
// Input variable for breakout period
breakoutPeriod = input.int(100, title="Breakout Period", minval=1)
// Calculate the highest close of the past breakout period
highestClose = ta.highest(close, breakoutPeriod)
// Input variables for start and end dates
startYear = input.int(2022, title="Start Year", minval=1900)
startMonth = input.int(1, title="Start Month", minval=1, maxval=12)
startDay = input.int(1, title="Start Day", minval=1, maxval=31)
endYear = input.int(2023, title="End Year", minval=1900)
endMonth = input.int(12, title="End Month", minval=1, maxval=12)
endDay = input.int(31, title="End Day", minval=1, maxval=31)
// Convert start and end dates to timestamp
startDate = timestamp(startYear, startMonth, startDay, 00, 00)
endDate = timestamp(endYear, endMonth, endDay, 23, 59)
// Entry condition: Breakout and higher close within the specified date range
enterLong = close > highestClose[1] and close > close[1]
// Exit condition: Close the long position after twenty-five bars
exitLong = ta.barssince(enterLong) >= 25
// Strategy logic
if (enterLong)
strategy.entry("Long", strategy.long)
if (exitLong)
strategy.close("Long")