
Chiến lược theo dõi dừng động bằng cách tính toán phạm vi biến động thực tế trung bình của cổ phiếu là ATR làm chuẩn, kết hợp với hệ số ATR của người dùng thiết lập động thiết lập đường dừng và đường theo dõi, để đạt được mục đích của việc theo dõi dừng lỗ. Khi giá cổ phiếu phá vỡ đường theo dõi, hãy sử dụng chiến lược theo dõi xu hướng truyền thống để thiết lập nhiều vị trí; Khi giá cổ phiếu giảm xuống đường dừng, hãy sử dụng chiến lược đảo ngược để thiết lập vị trí trống, sử dụng giao dịch hai chiều để kiếm lợi nhuận.
Chiến lược này chủ yếu sử dụng chỉ số kỹ thuật ATR để tính toán phạm vi biến động thực tế trung bình của giá cổ phiếu và kết hợp hệ số ATR của người dùng để mua và bán lỗ phá vỡ cổ phiếu. Cụ thể, chiến lược này đầu tiên tính toán giá trị ATR của cổ phiếu trong 120 ngày qua, sau đó nhân với hệ số ATR bán được giá trị bán dừng, tức là đường dừng; nhân với hệ số ATR mua được giá trị mua tham chiếu, tức là đường theo dõi.
Chiến lược này vẽ cùng một lúc các đường dừng lỗ và đường theo dõi, vị trí của hai đường sẽ thay đổi tùy theo biến động của giá cổ phiếu, có một chức năng theo dõi động. Chỉ số ATR có thể phản ánh tốt hơn mức độ biến động trung bình của cổ phiếu, sử dụng chỉ số ATR để thiết lập đường theo dõi dừng lỗ, có thể tránh thiệt hại do biến động lớn của cổ phiếu đến một mức độ nào đó.
Chiến lược này nói chung là một chiến lược theo dõi dừng lỗ điển hình, ý tưởng cốt lõi là thiết lập đường dừng lỗ và đường theo dõi dựa trên chỉ số ATR để theo dõi xu hướng. Ưu điểm của chiến lược là có thể giao dịch hai chiều, giữ vị trí linh hoạt; Sử dụng chỉ số ATR để kiểm soát rủi ro, phù hợp với cổ phiếu có biến động cao.
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
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/
// © phobo3s
//@version=4
strategy("ATR Stop Buy Strategy",shorttitle="ATR-ST",initial_capital=1000, overlay = true, default_qty_type = strategy.percent_of_equity, pyramiding = 5, default_qty_value = 20, commission_type = strategy.commission.cash_per_order, commission_value = 1, calc_on_every_tick = true)
daysBack = input(defval=120, title="Days Back", type=input.integer)
sellCoeff = input(defval=1.5, title="Selling Coefficent For ATR", type=input.float, minval= 0.01, step=0.1)
buyCoeff = input(defval=1.2, title = "Buying Coefficent For ATR", type=input.float, minval= 0.01, step=0.1)
fromDate = timenow - (daysBack*24*60*60*1000)
toDate = timenow
ATR = atr(14)
stopLossPoint = ATR * sellCoeff
buyPoint = ATR * buyCoeff
StoplossLine = close[1] - stopLossPoint[1]
BuyLine = close[1] + buyPoint[1]
if (high > BuyLine and time >= fromDate and time <= toDate )
strategy.entry("GG", strategy.long, comment="Gir")
if (low < StoplossLine and strategy.position_avg_price < close and time >= fromDate and time <= toDate )
strategy.entry("GG", strategy.short, comment="Çık")
//longFlags = close < StoplossLine
//shortFlags = close > BuyLine
//plotshape(shortFlags, style=shape.triangledown, location=location.abovebar, color=color.red)
//plotshape(longFlags, style=shape.triangleup, location=location.belowbar, color=color.blue)
plot(StoplossLine)
plot(BuyLine)