Chiến lược giao dịch dừng lỗ động: Mô hình giá đột phá nhiều kỳ dựa trên biến động

BREAKOUT ATR SL TP VOL momentum RSI
Ngày tạo: 2025-02-20 17:02:22 sửa đổi lần cuối: 2025-02-27 17:27:27
sao chép: 1 Số nhấp chuột: 421
2
tập trung vào
319
Người theo dõi

Chiến lược giao dịch dừng lỗ động: Mô hình giá đột phá nhiều kỳ dựa trên biến động Chiến lược giao dịch dừng lỗ động: Mô hình giá đột phá nhiều kỳ dựa trên biến động

Tổng quan

Chiến lược này là một hệ thống giao dịch dựa trên phá vỡ giá và theo dõi động dừng lỗ. Nó giao dịch bằng cách theo dõi giá cao nhất và thấp nhất trong N chu kỳ qua, giao dịch khi giá vượt qua các mức quan trọng này. Chiến lược sử dụng cơ chế dừng lỗ thông minh, chỉ kích hoạt dừng theo dõi khi đạt được 1% lợi nhuận, để lợi nhuận phát triển đầy đủ.

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

Logic cốt lõi của chiến lược bao gồm những phần chính sau:

  1. Tín hiệu đầu vào: Bằng cách tính toán giá cao nhất và giá thấp nhất trong N chu kỳ trước đó, nó sẽ kích hoạt tín hiệu giao dịch khi giá hiện tại vượt qua các mức này. Nhiều đầu vào yêu cầu giá vượt qua mức cao nhất định của giai đoạn trước, trong khi đầu trống cần phá vỡ mức thấp của giai đoạn trước.
  2. Quản lý giao dịch: Thực hiện thời gian làm mát giao dịch trong 1 giờ, tránh giao dịch thường xuyên khi có biến động mạnh.
  3. Kiểm soát rủi ro: Sử dụng lệnh dừng theo dõi động, chỉ được kích hoạt sau khi thu được 1% lợi nhuận, có thể bảo vệ lợi nhuận tốt hơn.
  4. Tối ưu hóa tham số: Các tham số quan trọng như chu kỳ xem lại, phá vỡ ngưỡng, tỷ lệ dừng lỗ, v.v. có thể được điều chỉnh theo các tình huống thị trường khác nhau.

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

  1. Quản lý rủi ro năng động: Bằng cách theo dõi các cơ chế dừng lỗ, chiến lược có thể giúp lợi nhuận tăng lên liên tục trong khi bảo vệ lợi nhuận.
  2. Khả năng thích ứng linh hoạt: Chiến lược có thể thích ứng với các điều kiện thị trường khác nhau để tối ưu hóa hiệu suất bằng cách điều chỉnh các tham số.
  3. Cơ chế lọc: Sử dụng thời gian làm mát giao dịch để tránh giao dịch quá mức và cải thiện chất lượng giao dịch.
  4. Đơn giản và hiệu quả: Chiến lược logic rõ ràng, dễ hiểu và dễ thực hiện, trong khi vẫn có khả năng mở rộng tốt.

Rủi ro chiến lược

  1. Rủi ro phá vỡ giả: Thị trường có thể bị phá vỡ giả, dẫn đến tín hiệu sai.
  2. Tác động điểm trượt: Trong thời gian có biến động cao, có thể có điểm trượt lớn hơn, ảnh hưởng đến hiệu suất chiến lược.
  3. Nhận thức tham số: Hiệu suất của chiến lược nhạy cảm với các thiết lập tham số, cần tối ưu hóa cẩn thận.
  4. Tùy thuộc vào môi trường thị trường: có thể không hoạt động tốt trong môi trường biến động thấp.

Hướng tối ưu hóa chiến lược

  1. Tiến hành chỉ số giao dịch: tăng độ tin cậy của tín hiệu đột phá bằng cách xác nhận giao dịch.
  2. Thêm bộ lọc xu hướng: kết hợp với các chỉ số xu hướng dài hạn, chỉ giao dịch theo hướng xu hướng.
  3. Điều chỉnh tham số động: Điều chỉnh tự động các tham số phá vỡ và dừng lỗ theo biến động của thị trường.
  4. Nhiều chu kỳ thời gian: tích hợp các tín hiệu từ nhiều chu kỳ thời gian để cải thiện độ chính xác.

Tóm tắt

Đây là một chiến lược theo dõi xu hướng được thiết kế hợp lý, kết hợp với phá vỡ giá và dừng động, có thể nắm bắt xu hướng lớn và kiểm soát rủi ro một cách hiệu quả. Chiến lược có khả năng tùy biến mạnh mẽ, có thể thích ứng với các môi trường thị trường khác nhau thông qua tối ưu hóa tham số.

Mã nguồn chiến lược
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Binance","currency":"TRB_USDT"}]
*/

//@version=5
//TSLA has the buest results on the 5 min or 1 hour chart
//NQ 15 minute
strategy("!! 🔥 Breakout Strategy with Trailing Stop", overlay=true, 
         default_qty_type=strategy.percent_of_equity, default_qty_value=100, 
         pyramiding=100)

// User inputs
var int lookbackBars = input.int(10, title="Lookback Bars", minval=1)
var float breakoutThresholdPct = input.float(0.05, title="Breakout Threshold Percentage", minval=0.0001, maxval=5, step=0.01)
var float stopLossPct = input.float(0.2, title="Stop Loss Percentage", minval=0.1) / 100
// Adjusted: No longer directly using takeProfitPct for a fixed take profit level
var float trailStartPct = input.float(0.5, title="Trail Start at Profit Percentage", minval=0.001) / 100

// Tracking the last entry time
var float lastEntryTime = na

// Calculate the highest high and lowest low over the last N bars excluding the current bar
float previousHigh = ta.highest(high[1], lookbackBars)
float previousLow = ta.lowest(low[1], lookbackBars)


// Entry condition adjusted to compare current price against the previous period's high/low
bool breakoutHigh = close > previousHigh * (1 + breakoutThresholdPct / 100) and (na(lastEntryTime) or (time - lastEntryTime) > 3600000 )
bool breakoutLow = close < previousLow * (1 - breakoutThresholdPct / 100) and (na(lastEntryTime) or (time - lastEntryTime) > 3600000 )

// Execute strategy based on the breakout condition
if (breakoutHigh)
    strategy.entry("Breakout Buy", strategy.long)
    lastEntryTime := time
else if (breakoutLow)
    strategy.entry("Breakout Sell", strategy.short)
    lastEntryTime := time

// Exiting the strategy with a trailing stop that starts after reaching 1% profit
// Adjusted: Implementing a dynamic trailing stop that activates after a 1% profit
if strategy.position_size > 0 
    strategy.exit("Trailing Stop Exit", "Breakout Buy", trail_points = close * trailStartPct, trail_offset = close * stopLossPct)
if strategy.position_size < 0 
    strategy.exit("Trailing Stop Exit", "Breakout Sell", trail_points = close * trailStartPct, trail_offset = close * stopLossPct)

// Visualization for debugging and analysis
plot(previousHigh, color=color.green, linewidth=2, title="Previous High")
plot(previousLow, color=color.red, linewidth=2, title="Previous Low")
// plotshape(series=breakoutHigh, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
// plotshape(series=breakoutLow, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")