Chiến lược đảo ngược đột phá với lệnh dừng lỗ

Tác giả:ChaoZhang, Ngày: 2024-02-05 14:56:16
Tags:

img

Tổng quan

Đây là một chiến lược giao dịch định lượng dài / ngắn dựa trên lý thuyết đột phá. Nó tính toán mức giá đóng cửa cao nhất trong 100 ngày giao dịch vừa qua và xác định nếu một sự đột phá xảy ra dựa trên giá đóng cửa gần nhất vượt quá mức đó. Nếu phát hiện ra sự đột phá, một tín hiệu dài sẽ được kích hoạt. Sau khi vào dài, vị trí sẽ được đóng bằng một mức dừng lỗ sau 25 thanh.

Chiến lược logic

Lý thuyết cốt lõi của chiến lược này tận dụng lý thuyết breakout trong phân tích kỹ thuật. Lý thuyết breakout tin rằng khi giá vượt qua mức cao nhất hoặc thấp nhất gần đây trong một khoảng thời gian, nó báo hiệu một sự đảo ngược và thị trường có thể bắt đầu một xu hướng tăng hoặc giảm mới.

Cụ thể, chiến lược này sử dụng Pine Script tích hợp chức năngta.highest()để tính toán mức đóng cửa cao nhất trong 100 thanh cuối cùng. Sau đó nó so sánh nếu giá đóng cửa thanh hiện tại cao hơn mức đó. Nếu giá đóng cửa vượt qua và vượt quá giá đóng cửa cao nhất trong 100 ngày, tín hiệu nhập cảnh dài sẽ được kích hoạt.

Một khi vào một vị trí dài, chiến lược đặt một điều kiện dừng lỗ để đóng vị trí.ta.barssince()để đếm số lượng thanh đã trôi qua kể từ khi nhập dài, nó sẽ buộc phải đóng vị trí sau 25 thanh.

Logic đầu vào có thể được tóm tắt như sau:

  1. Tính toán mức đóng cửa cao nhất trong 100 ngày giao dịch gần đây
  2. So sánh nếu giá đóng cửa của thanh hiện tại vượt quá mức đóng cửa cao nhất
  3. Nếu vượt quá, kích hoạt tín hiệu nhập cảnh dài
  4. Đóng vị trí mua bằng cách dừng lỗ sau 25 bar

Phân tích lợi thế

Lợi thế lớn nhất của chiến lược này là nắm bắt các điểm đảo ngược giá với tỷ lệ thành công tương đối cao của các giao dịch theo xu hướng. Ngoài ra, logic dừng lỗ có thể kiểm soát hiệu quả số tiền lỗ giao dịch duy nhất.

Những lợi thế cụ thể là:

1. Theo xu hướng, tỷ lệ thành công cao hơn

Lý thuyết đột phá tin rằng sau khi giá vượt quá một mức chính, nó có thể bắt đầu một xu hướng mới. Chiến lược này được thiết kế dựa trên logic này, do đó với xác suất tương đối cao để nắm bắt các điểm đảo ngược giá và hưởng lợi từ việc theo xu hướng.

2. Rủi ro có thể kiểm soát được, với dừng lỗ

Chiến lược đặt ra một lệnh dừng lỗ bắt buộc sau 25 thanh để tối đa lỗ giao dịch duy nhất, tránh mất mát lớn.

Thích hợp cho việc nắm giữ trung bình đến dài hạn

Thời gian giữ mặc định là 25 thanh, khoảng 1 tháng. tần suất này phù hợp với các chiến lược trung và dài hạn, không quá ngắn cho whipsaws và không quá dài để tăng rủi ro.

4. Một số thông số, dễ dàng tối ưu hóa

Có chủ yếu là 2 tham số có thể điều chỉnh. Với một số tham số, nó dễ dàng để kiểm tra và tìm các tham số tối ưu cho giao dịch thực tế.

5. Có thể chuyển qua các sản phẩm khác nhau

Chiến lược này không trả lời về các chỉ số đặc biệt của một số sản phẩm. logic của nó áp dụng cho cổ phiếu, ngoại hối, hàng hóa, tiền điện tử vv Vì vậy, nó linh hoạt để chuyển đổi giữa các sản phẩm.

Phân tích rủi ro

Trong khi chiến lược này có một số lợi thế, cũng có một số rủi ro khi triển khai nó trong giao dịch thực tế, chủ yếu là:

1. Rủi ro nắm giữ các vị trí thua lỗ

Nếu xu hướng giá không diễn ra như mong đợi, hoặc đột phá hóa ra là đột phá sai, thì việc buộc phải thoát khỏi điểm dừng lỗ được đặt trước có thể dẫn đến tổn thất lớn. Đây là rủi ro lớn nhất.

2. Điều chỉnh tham số có thể cần thiết

Các thông số mặc định có thể không tối ưu. Chúng cần được tối ưu hóa trong giao dịch trực tiếp để tìm phù hợp nhất với các chế độ sản phẩm và thị trường cụ thể. Điều này thêm công việc bổ sung.

3. Sự tương quan hiệu suất với thị trường

Chiến lược này phụ thuộc quá nhiều vào xu hướng giá liên tục. Nó không hoạt động tốt trong các chế độ giới hạn phạm vi. Nếu gặp thị trường whipsaw, việc buộc phải thoát thường xảy ra dẫn đến lợi nhuận / lỗ không ổn định.

Tối ưu hóa

Để làm cho chiến lược này mạnh mẽ hơn và có lợi cho việc triển khai thực tế, một số cải tiến có thể được thực hiện từ các khía cạnh sau:

1. Thêm cơ chế dừng lỗ

Thêm logic dừng lỗ để theo dõi các vị trí có lợi nhuận, bằng cách cập nhật động điểm dừng lỗ dựa trên lợi nhuận nổi.

2. Các thông số thích nghi dựa trên thị trường

Làm cho các tham số như thời gian đột phá và thời gian giữ thích nghi dựa trên sức mạnh thị trường, định lượng bằng các chỉ số như ATR. Điều này có thể điều chỉnh các tham số một cách năng động.

**3. Kết hợp các bộ lọc xu hướng **

Tốt hơn lọc các xu hướng không rõ ràng khi áp dụng chiến lược, thông qua phân tích xu hướng trước, hoặc theo quyết định hoặc định lượng.

4. Kiểm tra trên các sản phẩm khác nhau và khoảng thời gian

Kiểm tra các thông số và quy tắc tối ưu hóa trên các sản phẩm khác nhau (ví dụ: chỉ số, hàng hóa, ngoại hối, tiền điện tử) và khoảng thời gian (ví dụ: hàng ngày, thanh 60m) sẽ làm cho chiến lược này mạnh mẽ hơn và áp dụng rộng rãi hơn.

Kết luận

Chiến lược đảo ngược đột phá này với stop loss rất dễ thực hiện với các quy tắc rõ ràng về xác định xu hướng và quản lý vị trí. Chúng tôi phân tích sức mạnh và rủi ro của nó, cung cấp các đề xuất để tăng lợi nhuận và khả năng áp dụng. Với tối ưu hóa hơn nữa, nó có thể trở thành một chiến lược giao dịch định lượng vững chắ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")


Thêm nữa