
Chiến lược dừng chân theo hai ATR là một chiến lược giao dịch ngắn hạn dựa trên chỉ số sóng thực trung bình ((ATR)). Chiến lược này đặt hai đường dừng chân ATR nhanh và đường dừng chân ATR chậm cùng một lúc, để đánh giá nhập và xuất cảnh dựa trên sự giao thoa của hai đường dừng chân. Chiến lược này đơn giản, dễ hiểu, phản ứng nhanh và phù hợp với thị trường biến động cao.
Chiến lược này chủ yếu sử dụng chỉ số ATR để thiết lập hai đường dừng lỗ. Một là đường ATR nhanh, chu kỳ ATR ngắn, nhân số nhỏ, phản ứng nhanh; một là đường ATR chậm, chu kỳ ATR dài, nhân số lớn, đóng vai trò là bộ lọc.
Hình thức hoạt động cụ thể là: tính toán đường ATR nhanh và đường ATR chậm; nếu giá đường nhanh cao hơn đường chậm, hãy dừng lại với đường nhanh, nếu không, hãy dừng lại với đường chậm. Màu Kline cho thấy đường dừng hiện đang sử dụng, màu xanh lá cây và xanh dương cho thấy đường dừng với đường nhanh, màu đỏ và vàng cho thấy đường dừng với đường chậm.
Chiến lược dừng lỗ theo dõi ATR kép có những lợi thế sau:
Chiến lược này cũng có một số rủi ro:
Những rủi ro này có thể được giảm thiểu bằng cách tối ưu hóa chu kỳ ATR, điều chỉnh số lần ATR, kết hợp với các phương pháp lọc các chỉ số khác.
Các hướng tối ưu hóa tiếp theo của chiến lược dừng lỗ theo dõi ATR kép bao gồm:
Chiến lược dừng thua lỗ theo dõi ATR kép là một chiến lược dễ hiểu, đặc biệt phù hợp với các tình huống có tỷ lệ biến động cao, có thể kiểm soát rủi ro hiệu quả. Không gian tối ưu hóa cũng lớn, có thể được nâng cao bằng cách điều chỉnh tham số, thêm bộ lọc.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
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/
// © ceyhun
//@version=4
strategy("ATR Trailing Stop Strategy by ceyhun", overlay=true)
/////////notes////////////////////////////////////////
// This is based on the ATR trailing stop indicator //
// width addition of two levels of stops and //
// different interpretation. //
// This is a fast-reacting system and is better //
// suited for higher volatility markets //
//////////////////////////////////////////////////////
SC = input(close, "Source", input.source)
// Fast Trail //
AP1 = input(5, "Fast ATR period", input.integer) // ATR Period
AF1 = input(0.5, "Fast ATR multiplier", input.float) // ATR Factor
SL1 = AF1 * atr(AP1) // Stop Loss
Trail1 = 0.0
Trail1 := iff(SC > nz(Trail1[1], 0) and SC[1] > nz(Trail1[1], 0), max(nz(Trail1[1], 0), SC - SL1), iff(SC < nz(Trail1[1], 0) and SC[1] < nz(Trail1[1], 0), min(nz(Trail1[1], 0), SC + SL1), iff(SC > nz(Trail1[1], 0), SC - SL1, SC + SL1)))
// Slow Trail //
AP2 = input(10, "Slow ATR perod", input.integer) // ATR Period
AF2 = input(2, "Slow ATR multiplier", input.float) // ATR Factor
SL2 = AF2 * atr(AP2) // Stop Loss
Trail2 = 0.0
Trail2 := iff(SC > nz(Trail2[1], 0) and SC[1] > nz(Trail2[1], 0), max(nz(Trail2[1], 0), SC - SL2), iff(SC < nz(Trail2[1], 0) and SC[1] < nz(Trail2[1], 0), min(nz(Trail2[1], 0), SC + SL2), iff(SC > nz(Trail2[1], 0), SC - SL2, SC + SL2)))
// Bar color for trade signal //
Green = Trail1 > Trail2 and close > Trail2 and low > Trail2
Blue = Trail1 > Trail2 and close > Trail2 and low < Trail2
Red = Trail2 > Trail1 and close < Trail2 and high < Trail2
Yellow = Trail2 > Trail1 and close < Trail2 and high > Trail2
// Signals //
Bull = barssince(Green) < barssince(Red)
Bear = barssince(Red) < barssince(Green)
Buy = crossover(Trail1, Trail2)
Sell = crossunder(Trail1, Trail2)
TS1 = plot(Trail1, "Fast Trail", style=plot.style_line,color=Trail1 > Trail2 ? color.blue : color.yellow, linewidth=2)
TS2 = plot(Trail2, "Slow Trail", style=plot.style_line,color=Trail1 > Trail2 ? color.green : color.red, linewidth=2)
fill(TS1, TS2, Bull ? color.green : color.red, transp=90)
plotcolor = input(true, "Paint color on chart", input.bool)
bcl = iff(plotcolor == 1, Blue ? color.blue : Green ? color.lime : Yellow ? color.yellow : Red ? color.red : color.white, na)
barcolor(bcl)
if Buy
strategy.entry("Buy", strategy.long, comment="Buy")
if Sell
strategy.entry("Sell", strategy.short, comment="Sell")