Chiến lược đột phá động lượng dựa trên khái niệm được đề xuất bởi Richard Bookstaber vào năm 1984 rằng một khi có một chuyển động biến động lớn, thị trường có xu hướng theo dõi nó.
Chiến lược này đầu tiên tính toán chỉ số ATR để đo biến động thị trường. Sau đó nó tính toán giá trị tuyệt đối của sự thay đổi giá đóng hàng ngày. Khi sự thay đổi giá đóng vượt quá giá trị ATR nhiều lần, các tín hiệu giao dịch được tạo ra. Cụ thể, nếu giá đóng tăng hơn đường ray trên ATR, đi dài; nếu giá đóng giảm hơn đường ray trên ATR, đi ngắn.
Chiến lược này sử dụng chỉ số ATR để xác định động ngưỡng đột phá. Khi biến động thị trường tăng, ngưỡng sẽ tăng để giảm các giao dịch sai. Khi biến động thị trường giảm, ngưỡng sẽ giảm để nắm bắt các cơ hội đột phá kịp thời.
Xem xét kết hợp các chỉ số khác để chọn các cơ hội giao dịch để cải thiện hiệu quả. Ngoài ra, chọn các thông số tối ưu dựa trên các đặc điểm của sản phẩm. Sử dụng các kỹ thuật như Martingale để kiểm soát tần suất giao dịch.
Chiến lược phá vỡ đà là đơn giản và trực tiếp, tạo ra các tín hiệu giao dịch từ các đà phá vỡ. ATR dừng lỗ cho phép nó thích nghi với sự biến động của thị trường. Chiến lược dựa trên tối ưu hóa tham số để có kết quả tốt. Nhưng cũng có một số vấn đề như thiếu các đà phá vỡ ban đầu, giao dịch thường xuyên, v.v.
/*backtest start: 2022-10-26 00:00:00 end: 2023-11-01 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/ // © EduardoMattje //@version=5 strategy("Volatility System", overlay=false, margin_long=0, margin_short=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100, process_orders_on_close=true, initial_capital=20000) // Inputs var averageLength = input.int(14, "Average length", 2) var multiplier = input.float(2.0, "Multiplier", 0.0, step=0.1) // Calculations atr = ta.atr(averageLength) * multiplier closingChange = ta.change(close, 1) atrPenetration(int signal) => res = closingChange * signal > atr[1] longCondition = atrPenetration(1) shortCondition = atrPenetration(-1) // Order calls if (longCondition) strategy.entry(strategy.direction.long, strategy.long) if (shortCondition) strategy.entry(strategy.direction.short, strategy.short) // Visuals plot(atr, "ATR", color.white, 2) plot(math.abs(closingChange), "Absolute close change", color.red)