Bài viết này giới thiệu một chiến lược theo dõi đảo ngược động lực dựa trên chỉ số Parabolic Stop and Reverse (SAR). Chiến lược này sử dụng chỉ số Parabolic SAR để xác định sự đảo ngược xu hướng tiềm năng trong thị trường Nifty Futures cho giao dịch theo dõi xu hướng tự động.
Chiến lược này chủ yếu phù hợp với các nhà giao dịch thích cách tiếp cận giao dịch có hệ thống, cung cấp các tín hiệu vào và ra rõ ràng.
Chiến lược này sử dụng chỉ số SAR Parabolic để xác định hướng xu hướng giá. Trong xu hướng tăng, giá trị SAR nằm dưới giá và dần dần di chuyển lên khi mức cao mới xảy ra; Trong xu hướng giảm, giá trị SAR nằm trên giá và dần dần di chuyển xuống khi mức thấp mới xảy ra.
Khi giá trị SAR vượt trên hoặc dưới giá, nó cho thấy một sự đảo ngược xu hướng tiềm năng và chiến lược sẽ có các vị trí ngắn hoặc dài tương ứng để nắm bắt hướng xu hướng mới.
Cụ thể, sau khi tính toán ban đầu giá trị SAR hiện tại và yếu tố tăng tốc, chiến lược tiếp tục theo dõi mức cao/ thấp mới và điều chỉnh giá trị SAR phù hợp. Trên thanh xác nhận, nếu trong xu hướng tăng, nó có vị trí ngắn dưới giá trị SAR; nếu trong xu hướng giảm, nó có vị trí dài trên giá trị SAR.
Chiến lược cung cấp một hệ thống tự động để nắm bắt sự đảo ngược xu hướng thị trường bằng cách sử dụng chỉ số Parabolic SAR. Nó cung cấp các tín hiệu vào và ra rõ ràng cho các quyết định giao dịch, giúp kiếm lợi từ theo dõi xu hướng. Nhưng các vấn đề như tín hiệu sai, rủi ro dừng lỗ cũng cần chú ý. Với tối ưu hóa liên tục, nó có tiềm năng trở thành một phương pháp theo dõi xu hướng đáng tin cậy.
/*backtest start: 2024-01-27 00:00:00 end: 2024-02-03 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Positional Parabolic SAR Strategy", overlay=true) initial = input(0.02) step = input(0.02) cap = input(0.2) var bool isUptrend = na var float Extremum = na var float SARValue = na var float Accelerator = initial var float futureSAR = na if bar_index > 0 isNewTrendBar = false SARValue := futureSAR if bar_index == 1 float pastSAR = na float pastExtremum = na previousLow = low[1] previousHigh = high[1] currentClose = close pastClose = close[1] if currentClose > pastClose isUptrend := true Extremum := high pastSAR := previousLow pastExtremum := high else isUptrend := false Extremum := low pastSAR := previousHigh pastExtremum := low isNewTrendBar := true SARValue := pastSAR + initial * (pastExtremum - pastSAR) if isUptrend if SARValue > low isNewTrendBar := true isUptrend := false SARValue := math.max(Extremum, high) Extremum := low Accelerator := initial else if SARValue < high isNewTrendBar := true isUptrend := true SARValue := math.min(Extremum, low) Extremum := high Accelerator := initial if not isNewTrendBar if isUptrend if high > Extremum Extremum := high Accelerator := math.min(Accelerator + step, cap) else if low < Extremum Extremum := low Accelerator := math.min(Accelerator + step, cap) if isUptrend SARValue := math.min(SARValue, low[1]) if bar_index > 1 SARValue := math.min(SARValue, low[2]) else SARValue := math.max(SARValue, high[1]) if bar_index > 1 SARValue := math.max(SARValue, high[2]) futureSAR := SARValue + Accelerator * (Extremum - SARValue) if barstate.isconfirmed if isUptrend strategy.entry("ShortEntry", strategy.short, stop=futureSAR, comment="ShortEntry") strategy.cancel("LongEntry") else strategy.entry("LongEntry", strategy.long, stop=futureSAR, comment="LongEntry") strategy.cancel("ShortEntry") plot(SARValue, style=plot.style_cross, linewidth=3, color=color.white) plot(futureSAR, style=plot.style_cross, linewidth=3, color=color.red)