
Chiến lược này sử dụng tư tưởng về trailing stop động để tính toán đường dừng ngắn dài theo ATR và giá trị cực đoan. Kết hợp với tư tưởng của Chandelier Exit, theo đường dừng để đánh giá hướng của vị trí ngắn dài. Khi đường dừng phá vỡ lên, đánh giá là lạc quan, làm nhiều hơn; Khi đường dừng phá vỡ xuống, đánh giá là giảm giá, làm không.
Chiến lược này có chức năng kép là đánh giá các tín hiệu dừng và đầu vào.
Chiến lược này bao gồm:
ATR được tính theo thời gian thực dựa trên khoảng thời gian ATR và số lần mà người dùng đã thiết lập. Sau đó, tính theo ATR và giá trị cực đại của đường dừng dài và ngắn:
longStop = 最高价 - ATR
shortStop = 最低价 + ATR
So sánh đường dừng của một đường K trước và đường dừng của đường K hiện tại. Nếu đường dừng của đường K hiện tại bị phá vỡ, tín hiệu giao dịch sẽ được phát ra:
长仓止损线上方突破,做多
短仓止损线下方突破,做空
Khoảng cách dừng lỗ và khoảng cách dừng lại được tính từ ATR dựa trên RRR so với RRR mà người dùng đã đặt. Cài đặt lệnh dừng lỗ và lệnh dừng lỗ khi mở vị trí.
Chiến lược này có những ưu điểm sau:
Chiến lược này sử dụng các đường dừng theo dõi động để có thể dừng lỗ và kiểm soát rủi ro giảm.
Chiến lược dừng lỗ này cũng là một điều kiện để nhập cảnh, đơn giản hóa logic chiến lược.
Theo tỷ lệ lợi nhuận rủi ro được thiết lập, theo đuổi lợi nhuận cao hơn một cách thích hợp.
Cấu trúc của chiến lược này đơn giản, dễ hiểu và tối ưu hóa mở rộng.
Chiến lược này cũng có một số rủi ro:
Chiến lược này là một chiến lược giao dịch song phương, đồng thời chịu rủi ro giao dịch quá nhiều và quá ít.
Cài đặt tham số ATR có ảnh hưởng trực tiếp đến đường dừng lỗ và tần số giao dịch. Cài đặt không đúng có thể dẫn đến việc dừng lỗ quá nới lỏng hoặc tần số giao dịch quá cao.
Chiến lược này phù hợp hơn với các trường hợp phá vỡ sau khi điều chỉnh đường trung bình, không phù hợp với các tình huống có xu hướng quá mạnh.
Đối với các rủi ro trên, có thể tối ưu hóa từ các khía cạnh sau:
Kết hợp các chỉ số xu hướng như MA để đánh giá xu hướng thị trường và tránh giao dịch ngược.
Tối ưu hóa tham số ATR và tham số so sánh lợi nhuận rủi ro, làm cho dừng lỗ và dừng lại hợp lý hơn.
Tăng điều kiện lọc khối lượng giao dịch hoặc chỉ số biến động để đảm bảo chất lượng giao dịch.
Chiến lược này có thể được tối ưu hóa hơn nữa:
Sử dụng mô hình học máy để dự đoán xu hướng giá, cải thiện độ chính xác nhập cảnh.
Sử dụng biến động giá của các loại bảo hiểm quyền chọn để xây dựng danh mục đầu tư không rủi ro.
Các nhà nghiên cứu đã tiến hành đánh giá thống kê giữa các thị trường khác nhau và các giống khác nhau để có được một Alpha ổn định.
Trả lời chiến lược hiệu quả và giao dịch trực tiếp thông qua công cụ giao dịch thuật toán.
Trong bài viết này, chúng tôi phân tích một chiến lược giao dịch định lượng dựa trên việc theo dõi động các lỗ. Chiến lược này có chức năng quản lý lỗ và phán đoán tín hiệu giao dịch đồng thời có thể kiểm soát rủi ro hiệu quả. Chúng tôi cũng phân tích lợi thế của chiến lược, rủi ro có thể tồn tại và ý tưởng tối ưu hóa tiếp theo.
/*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!")