Chiến lược này nhằm mục đích nghiên cứu sự khác biệt giữa việc mua tài sản khi biến động thấp và khi nó cao. Nó cho phép người dùng chọn mua trong thời gian biến động thấp hoặc cao bằng cách thay đổi biến nhập chế độ.
Chiến lược này xác định độ biến động bằng cách tính toán ATR và SMA của nó. Cụ thể, nó tính toán SMA của ATR, và sau đó tính toán tỷ lệ giữa ATR và SMA của nó. Nếu tỷ lệ này cao hơn tỷ lệ biến động ngưỡng được xác định bởi người dùngTargetRatio, độ biến động được coi là cao. Nếu thấp hơn ngưỡng, độ biến động được coi là thấp.
Tùy thuộc vào chế độ được người dùng chọn, chiến lược tạo ra tín hiệu mua khi biến động cao hoặc thấp. Một khi mua, chiến lược sẽ giữ cho một số thanh được xác định bởi sellAfterNBarsLength, và sau đó đóng vị trí.
Những lợi thế chính của chiến lược này là:
Những rủi ro chính của chiến lược này là:
Các rủi ro trên có thể được giảm thiểu bằng cách điều chỉnh các tham số và kết hợp các giao dịch mua từ các mức biến động khác nhau.
Chiến lược này có thể được tối ưu hóa thêm bằng cách:
Chiến lược này có thể so sánh hiệu quả hiệu suất của chiến lược mua biến động thấp và chiến lược mua biến động cao. Nó sử dụng SMA để làm mịn ATR và tạo ra các tín hiệu giao dịch dựa trên mức biến động. Chiến lược có thể được cải thiện thông qua điều chỉnh tham số và tối ưu hóa điều kiện. Nhìn chung, chiến lược này cung cấp một công cụ hiệu quả để nghiên cứu các chiến lược dựa trên biến động.
/*backtest start: 2023-01-01 00:00:00 end: 2024-01-07 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/ // © I11L //@version=5 strategy("I11L - Better Buy Low Volatility or High Volatility?", overlay=false) mode = input.string("Buy low Volatility",options = ["Buy low Volatility","Buy high Volatility"]) volatilityTargetRatio = input.float(1,minval = 0, maxval = 100,step=0.1, tooltip="1 equals the average atr for the security, a lower value means that the volatility is lower") atrLength = input.int(14) atr = ta.atr(atrLength) / close avg_atr = ta.sma(atr,atrLength*5) ratio = atr / avg_atr sellAfterNBarsLength = input.int(5, step=5, minval=0) var holdingBarsCounter = 0 if(strategy.opentrades > 0) holdingBarsCounter := holdingBarsCounter + 1 isBuy = false if(mode == "Buy low Volatility") isBuy := ratio < volatilityTargetRatio else isBuy := ratio > volatilityTargetRatio isClose = holdingBarsCounter > sellAfterNBarsLength if(isBuy) strategy.entry("Buy",strategy.long) if(isClose) holdingBarsCounter := 0 strategy.exit("Close",limit=close) plot(ratio, color=isBuy[1] ? color.green : isClose[1] ? color.red : color.white) plot(1, color=color.white)