Chiến lược giao dịch đột phá có thể mở rộng


Ngày tạo: 2023-10-30 17:25:17 sửa đổi lần cuối: 2023-10-30 17:25:17
sao chép: 0 Số nhấp chuột: 630
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch đột phá có thể mở rộng

Tổng quan

Chiến lược phá vỡ mở rộng là một chiến lược phá vỡ rất linh hoạt và có thể mở rộng bằng cách xác định các vùng hỗ trợ và kháng cự quan trọng của giá, tạo ra tín hiệu giao dịch khi giá vượt qua các khu vực này. Chiến lược này có thể áp dụng cho các chu kỳ thời gian khác nhau bằng cách điều chỉnh các tham số, cũng có thể dễ dàng tích hợp các điều kiện lọc bổ sung và cơ chế quản lý rủi ro khác nhau để tối ưu hóa cho các tài sản cụ thể.

Nguyên tắc chiến lược

Chiến lược này bắt đầu bằng việc sử dụngswings()Chức năng này dựa trên thời kỳ xem xét lại để tính toán các điểm cao và thấp của giá hiện tại.swingLookbackCài đặt tham số, mặc định 20 đường K ◦ Sau đó, khi giá vượt qua điểm cao của biến động, làm nhiều; khi giá giảm xuống điểm thấp của biến động, làm trống ◦

Lập luận cụ thể của tín hiệu mua nhiều là mua nhiều khi giá đóng cửa lớn hơn bằng giá biến động cao. Lập luận cụ thể của tín hiệu mua ngắn là mua ngắn khi giá đóng cửa nhỏ hơn bằng giá biến động thấp.

Ngoài ra, chiến lược cũng đặt lệnh dừng lỗ, thông quastopTargetPercentCác tham số để thiết lập mức dừng lỗ. Ví dụ: đặt giá dừng lỗ dưới 5% giá cao nhất và đặt giá dừng lỗ trên 5% giá thấp nhất.

Ưu điểm của chiến lược này là có thể kiểm soát tần suất giao dịch bằng cách điều chỉnh thời gian xem lại. Thời gian xem lại càng ngắn, nhạy cảm hơn với đột phá, tần suất giao dịch càng cao. Ngược lại, thời gian xem lại quá dài, tần suất giao dịch giảm nhưng có thể bỏ lỡ cơ hội. Vì vậy, việc tìm kiếm thời gian xem lại tối ưu cho chiến lược là rất quan trọng.

Lợi thế chiến lược

  • Những ý tưởng đột phá đơn giản, dễ hiểu và thực hiện
  • Có thể điều chỉnh các tham số tối ưu hóa thời gian xem xét lại để kiểm soát tần suất giao dịch
  • Có thể dễ dàng tích hợp các cơ chế quản lý rủi ro như dừng lỗ, dừng lỗ di động
  • Khả năng mở rộng, có thể thêm các điều kiện lọc khác nhau để tăng tỷ lệ lợi nhuận
  • Có thể áp dụng trong bất kỳ chu kỳ thời gian, phù hợp cho giao dịch trong ngày và đường dây dài

Rủi ro và giải pháp

  • Thời hạn xem xét quá ngắn có thể dẫn đến giao dịch quá mức
  • Thời gian xem xét quá dài có thể làm mất cơ hội giao dịch
  • Thiết lập dừng lỗ quá rộng có thể thu hẹp không gian lợi nhuận
  • Hạn chế quá hẹp có thể dẫn đến hạn chế thường xuyên được kích hoạt

Phản ứng:

  • Kiểm tra các giai đoạn xem xét khác nhau để tìm ra sự kết hợp tốt nhất
  • Tối ưu hóa mức dừng lỗ, cân bằng không gian lợi nhuận và kiểm soát rủi ro
  • Có thể thêm lệnh dừng di chuyển hoặc lệnh dừng vòng để khóa lợi nhuận
  • Tăng các điều kiện lọc để tăng khả năng giao dịch có lợi nhuận

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:

  1. Thử nghiệm các tham số khác nhau để tìm ra sự kết hợp tối ưu nhất;

  2. Kiểm tra các chu kỳ giao dịch khác nhau, chẳng hạn như 5 phút, 15 phút, 1 giờ, để chọn chu kỳ tốt nhất;

  3. Tối ưu hóa mức dừng lỗ, cân bằng không gian lợi nhuận và kiểm soát rủi ro;

  4. Thêm các điều kiện lọc, chẳng hạn như lọc khối lượng giao dịch, lọc giảm giá, để giảm tín hiệu kém chất lượng;

  5. tích hợp nhiều cơ chế quản lý rủi ro hơn, chẳng hạn như di chuyển lỗ, khóa lợi nhuận;

  6. Tối ưu hóa tham số, sử dụng tối ưu hóa từng bước, tìm kiếm ngẫu nhiên và tìm các tham số tối ưu;

  7. Tích hợp công nghệ học máy, sử dụng AI để tự động tối ưu hóa các tham số.

Tóm tắt

Chiến lược giao dịch đột phá mở rộng là một hệ thống đột phá rất thực tế. Nó đơn giản, dễ sử dụng, có thể tùy chỉnh và có thể được tối ưu hóa cho các tài sản khác nhau bằng cách điều chỉnh thời gian xem lại và tích hợp các điều kiện lọc khác nhau. Đồng thời, có thể dễ dàng tích hợp các cơ chế quản lý rủi ro khác nhau để kiểm soát rủi ro giao dịch.

Mã nguồn chiến lược
/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © deperp

//@version=5
// strategy("Range Breaker", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.07, pyramiding=0)

// Backtest Time Period

useDateFilter = input.bool(true, title="Begin Backtest at Start Date",
     group="Backtest Time Period")
backtestStartDate = input(timestamp("1 Jan 2020"), 
     title="Start Date", group="Backtest Time Period",
     tooltip="This start date is in the time zone of the exchange " + 
     "where the chart's instrument trades. It doesn't use the time " + 
     "zone of the chart or of your computer.")

inTradeWindow = true

swingLookback = input.int(20, title="Swing Lookback", minval=3)
stopTargetPercent = input.float(5, title="Stop Target Percentage", step=0.1)

// Calculate lockback swings
swings(len) =>
    var highIndex = bar_index
    var lowIndex = bar_index
    var swingHigh = float(na)
    var swingLow = float(na)
    
    upper = ta.highest(len)
    lower = ta.lowest(len)
    
    if high[len] > upper
        highIndex := bar_index[len]
        swingHigh := high[len]

    if low[len] < lower
        lowIndex := bar_index[len]
        swingLow := low[len]

    [swingHigh, swingLow, highIndex, lowIndex]


// Strategy logic
[swingHigh, swingLow, highIndex, lowIndex] = swings(swingLookback)
longCondition = inTradeWindow and (ta.crossover(close, swingHigh))
shortCondition = inTradeWindow and (ta.crossunder(close, swingLow))

if longCondition
    strategy.entry("Long", strategy.long)
if shortCondition
    strategy.entry("Short", strategy.short)

longStopTarget = close * (1 + stopTargetPercent / 100)
shortStopTarget = close * (1 - stopTargetPercent / 100)

strategy.exit("Long Stop Target", "Long", limit=longStopTarget)
strategy.exit("Short Stop Target", "Short", limit=shortStopTarget)

// Plot break lines
// line.new(x1=highIndex, y1=swingHigh, x2=bar_index, y2=swingHigh, color=color.rgb(255, 82, 82, 48), width=3, xloc=xloc.bar_index, extend=extend.right)
// line.new(x1=lowIndex, y1=swingLow, x2=bar_index, y2=swingLow, color=color.rgb(76, 175, 79, 47), width=3, xloc=xloc.bar_index, extend=extend.right)


// Alert conditions for entry and exit
longEntryCondition = inTradeWindow and (ta.crossover(close, swingHigh))
shortEntryCondition = inTradeWindow and (ta.crossunder(close, swingLow))

longExitCondition = close >= longStopTarget
shortExitCondition = close <= shortStopTarget

alertcondition(longEntryCondition, title="Long Entry Alert", message="Enter Long Position")
alertcondition(shortEntryCondition, title="Short Entry Alert", message="Enter Short Position")
alertcondition(longExitCondition, title="Long Exit Alert", message="Exit Long Position")
alertcondition(shortExitCondition, title="Short Exit Alert", message="Exit Short Position")