
Chiến lược theo dõi động nhiều không gian là một chiến lược sử dụng các giá trị trung bình động để theo dõi xu hướng giá. Nó xác định xu hướng hiện tại bằng cách tính toán trung bình di chuyển của giá cao nhất và giá thấp nhất trong một chu kỳ nhất định và kết hợp với ATR để thực hiện dừng lỗ động.
Chiến lược này đầu tiên tính toán trung bình di chuyển của giá cao nhất và giá thấp nhất trong một khoảng thời gian nhất định (đặc biệt là 200 ngày) và lấy điểm trung bình của cả hai là đường viền. Sau đó tính toán mức độ lệch của giá so với đường viền, được coi là xu hướng tăng khi giá cao hơn đường viền một ATR (đặc biệt là 0,5 lần đường viền 10 ngày ATR) và xu hướng giảm khi giá thấp hơn đường viền một ATR.
Một tín hiệu Exit được tạo ra khi giá quay trở lại đường viền. Ngoài ra, thay đổi động lực của ATR có thể làm cho điểm dừng lỗ kéo dài theo xu hướng lớn, giảm giao dịch quá thường xuyên do biến động không theo xu hướng.
Bạn có thể giảm độ nhạy cảm dừng lỗ bằng cách điều chỉnh các tham số ATR thích hợp, hoặc thêm các chỉ số khác để lọc thời gian giao dịch có độ chắc chắn cao. Bạn cũng có thể kết hợp với sự biến động của thị trường lớn để đánh giá độ hấp tấp rủi ro, chọn không chỉ làm nhiều hơn trong tình huống đa đầu thị trường lớn.
Chiến lược theo dõi động đa không gian nói chung là một chiến lược theo dõi xu hướng đơn giản và thực tế. Nó xác định hướng xu hướng bằng đường trung bình động và sử dụng ATR để thực hiện dừng lỗ động, có thể kiểm soát rủi ro hiệu quả. Chiến lược này phù hợp với môi trường thị trường có xu hướng rõ ràng, có thể thu được lợi nhuận vượt quá được giữ trong thời gian dài bằng cách bắt kịp xu hướng.
/*backtest
start: 2022-10-10 00:00:00
end: 2023-10-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Trend Following Long Only Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
lookback_length = input(200, type=input.integer, minval=1, title="Lookback Length")
smoother_length = input(5, type=input.integer, minval=1, title="Smoother Length")
atr_length = input(10, type=input.integer, minval=1, title="ATR Length")
atr_multiplier = input(0.5, type=input.float, minval=0.5, title="ATR Multiplier")
vola = atr(atr_length) * atr_multiplier
price = sma(close, 3)
l = ema(lowest(low, lookback_length), smoother_length)
h = ema(highest(high, lookback_length), smoother_length)
center = (h + l) * 0.5
upper = center + vola
lower = center - vola
trend = ema(price > upper ? 1 : (price < lower ? -1 : 0), 3)
c = trend < 0 ? upper : lower
pcenter = plot(center, transp=100)
pclose = plot(close, transp=100)
pc = plot(c, transp=100)
buy_signal = crossover(trend, 0.0)
sell_signal = crossunder(trend, 0.0)
strategy.entry("Buy", strategy.long, when=buy_signal)
strategy.close("Buy", when=sell_signal)
bgcolor(trend >= 0 ? color.green : color.red, transp=95)
fill(pc, pclose, color=trend >= 0 ? color.green : color.red)