Chiến lược trung bình động dừng lỗ động

Tác giả:ChaoZhang, Ngày: 2024-01-29 15:52:43
Tags:

img

Tổng quan

Chiến lược này áp dụng ý tưởng dừng lại động dựa trên ATR và cực đoan giá để tính toán các đường dừng lỗ dài và ngắn. Kết hợp với ý tưởng Chandelier Exit, nó đánh giá hướng dài / ngắn dựa trên sự đột phá đường dừng lỗ. Khi đường dừng lỗ phá vỡ lên, nó được đánh giá là tăng và bước vào dài. Khi đường dừng lỗ phá vỡ xuống, nó được đánh giá là giảm và bước vào ngắn.

Chiến lược có cả chức năng quản lý dừng lỗ và đánh giá tín hiệu đầu vào.

Chiến lược logic

Chiến lược bao gồm các phần chính sau:

  1. Tính toán các đường dừng lỗ dài / ngắn dựa trên ATR

    Dựa trên khoảng thời gian ATR được xác định bởi người dùng và số lần nhân, ATR thời gian thực được tính toán. Sau đó, các đường dừng lỗ dài / ngắn được tính toán với ATR và mức giá cực:

     longStop = Highest - ATR  
     shortStop = Lowest + ATR
    
  2. Đánh giá hướng giao dịch bằng cách phá vỡ

    So sánh các đường dừng lỗ giữa thanh trước và thanh hiện tại. Nếu đường dừng lỗ của thanh hiện tại bị phá vỡ, các tín hiệu giao dịch được kích hoạt:

     Long stop-loss line breakout upwards, long entry  
     Short stop-loss line breakout downwards, short entry   
    
  3. Đặt lệnh dừng lỗ và lấy lợi nhuận dựa trên tỷ lệ rủi ro-lợi nhuận

    Dựa trên tỷ lệ rủi ro-lợi nhuận được xác định bởi người sử dụng riskRewardRatio, khoảng cách dừng lỗ và khoảng cách lấy lợi nhuận được tính từ ATR. Lệnh dừng lỗ và lệnh lấy lợi nhuận được đặt khi mở các vị trí.

Phân tích lợi thế

Những lợi thế của chiến lược này bao gồm:

  1. Đánh giá giá

    Việc áp dụng các đường dừng lỗ theo dõi năng động giúp ngăn chặn lỗ kịp thời và kiểm soát rủi ro giảm.

  2. Chức năng kép

    Đường dừng lỗ phục vụ như cả công cụ quản lý dừng lỗ và thẩm phán điều kiện nhập cảnh, giảm sự phức tạp của chiến lược.

  3. Tỷ lệ rủi ro-lợi nhuận có thể điều chỉnh

    Theo đuổi lợi nhuận cao hơn với tỷ lệ rủi ro-lợi nhuận được xác định trước.

  4. Dễ hiểu và mở rộng

    Cấu trúc đơn giản, dễ hiểu và tối ưu hóa để mở rộng.

Phân tích rủi ro

Một số rủi ro có thể tồn tại cho chiến lược này:

  1. Rủi ro hai chiều

    Là một chiến lược giao dịch hai hướng, nó đảm nhận cả rủi ro dài và ngắn.

  2. Tùy thuộc vào tham số ATR

    Các thông số ATR trực tiếp ảnh hưởng đến các đường dừng lỗ và tần suất giao dịch.

  3. Khả năng thích nghi với xu hướng

    Chiến lược phù hợp hơn cho các kịch bản giới hạn phạm vi với đột phá đột ngột. Không phù hợp với các kịch bản xu hướng mạnh.

Các tối ưu hóa để giải quyết các rủi ro trên là:

  1. Bao gồm các chỉ số xu hướng

    Bao gồm MA và các chỉ số xu hướng khác để xác định xu hướng thị trường, tránh giao dịch theo xu hướng.

  2. Tối ưu hóa tham số

    Tối ưu hóa sự kết hợp của các tham số ATR và tỷ lệ rủi ro-lợi nhuận để dừng lỗ hợp lý hơn và lấy lợi nhuận.

  3. Các bộ lọc bổ sung

    Thêm các bộ lọc điều kiện khối lượng giao dịch hoặc biến động để đảm bảo chất lượng giao dịch.

Hướng dẫn tối ưu hóa

Vẫn còn chỗ để tối ưu hóa chiến lược hơn nữa:

  1. Kết hợp học máy

    Sử dụng các mô hình học máy để dự đoán xu hướng giá để có độ chính xác nhập khẩu cao hơn.

  2. Xây dựng danh mục đầu tư không rủi ro với các tùy chọn

    Sử dụng các tùy chọn để phòng ngừa biến động giá của tài sản cơ bản và xây dựng các danh mục đầu tư không rủi ro.

  3. Thuế trọng tài đa tài sản giữa các thị trường

    Thực hiện điều tra thống kê qua các thị trường và lớp tài sản khác nhau để có được alpha ổn định.

  4. Giao dịch thuật toán

    Tận dụng các công cụ giao dịch thuật toán để kiểm tra lại các chiến lược và giao dịch hiệu quả.

Kết luận

Bài viết này phân tích kỹ lưỡng một chiến lược giao dịch định lượng dựa trên stop loss động. Chiến lược đồng thời có chức năng quản lý stop loss và xác định tín hiệu giao dịch, có hiệu quả kiểm soát rủi ro. Chúng tôi cũng thảo luận về những lợi thế, rủi ro tiềm ẩn và tối ưu hóa trong tương lai của chiến lược. Đây là một chiến lược giao dịch rất thực tế đáng nghiên cứu và áp dụng thêm.


/*backtest
start: 2023-12-29 00:00:00
end: 2024-01-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Chandelier Exit with 1-to-1 Risk-Reward", shorttitle='CE', overlay=true)

// Chandelier Exit Logic
length = input.int(title='ATR Period', defval=22)
mult = input.float(title='ATR Multiplier', step=0.1, defval=3.0)
useClose = input.bool(title='Use Close Price for Extremums', defval=true)

atr = mult * ta.atr(length)

longStop = (useClose ? ta.highest(close, length) : ta.highest(length)) - atr
longStopPrev = nz(longStop[1], longStop)
longStop := close[1] > longStopPrev ? math.max(longStop, longStopPrev) : longStop

shortStop = (useClose ? ta.lowest(close, length) : ta.lowest(length)) + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := close[1] < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop

var int dir = 1
dir := close > shortStopPrev ? 1 : close < longStopPrev ? -1 : dir

// Risk-Reward Ratio
riskRewardRatio = input.int(1, title="Risk-Reward Ratio", minval=1, maxval=10, step=1)

// Calculate Take Profit and Stop Loss Levels
takeProfitLevel = atr * riskRewardRatio
stopLossLevel = atr

// Entry Conditions
longCondition = dir == 1 and dir[1] == -1
shortCondition = dir == -1 and dir[1] == 1

// Entry Signals
if (longCondition)
    strategy.entry("Long", strategy.long, stop=close - stopLossLevel, limit=close + takeProfitLevel)
if (shortCondition)
    strategy.entry("Short", strategy.short, stop=close + stopLossLevel, limit=close - takeProfitLevel)

longStopPlot = plot(dir == 1 ? longStop : na, title='Long Stop', style=plot.style_linebr, linewidth=2, color=color.green)
shortStopPlot = plot(dir == 1 ? na : shortStop, title='Short Stop', style=plot.style_linebr, linewidth=2, color=color.red)

midPricePlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0, display=display.none, editable=false)

fill(midPricePlot, longStopPlot, color=color.new(color.green, 90), title='Long State Filling')
fill(midPricePlot, shortStopPlot, color=color.new(color.red, 90), title='Short State Filling')

// Alerts
if (dir != dir[1])
    strategy.entry("Direction Change", strategy.long, comment="Chandelier Exit has changed direction!")
if (longCondition)
    strategy.entry("Buy Signal", strategy.long, comment="Chandelier Exit Buy!")
if (shortCondition)
    strategy.entry("Sell Signal", strategy.short, comment="Chandelier Exit Sell!")


Thêm nữa