Chiến lược này sử dụng chỉ số Parabolic SAR (Stop and Reverse) kết hợp với bộ lọc EMA để cải thiện độ chính xác tín hiệu. Nó phù hợp với các nhà giao dịch giao dịch theo xu hướng.
Một tín hiệu dài được kích hoạt khi SAR thấp hơn giá và giá cao hơn EMA chậm cộng với bù. Một tín hiệu ngắn được kích hoạt khi SAR cao hơn giá và giá thấp hơn EMA chậm trừ bù.
Cụ thể, các điều kiện nhập cảnh dài là:
Các điều kiện nhập cảnh ngắn là:
Kết hợp lọc SAR và EMA, chiến lược này có thể xác định hướng xu hướng tốt và giảm các tín hiệu sai.
Ưu điểm là:
Có một số rủi ro cho chiến lược này:
Chiến lược này có thể được tối ưu hóa từ các khía cạnh sau:
Chiến lược này kết hợp các điểm mạnh của SAR và EMA để thiết kế một hệ thống theo xu hướng linh hoạt. Nhìn chung nó có khả năng phát hiện xu hướng tốt và hoạt động tốt trong việc theo dõi xu hướng.
/*backtest start: 2023-01-11 00:00:00 end: 2024-01-17 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("SAR Trend Trader Strategy By: jhanson107", shorttitle="SAR Trend Trader Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100) SlowEMALength = input(100, "Slow EMA Length") FastEMALength = input(10, "Fast EMA Length") emaoffset = input(1.00, "EMA Offset %") start = input(0.01) increment = input(0.005) maximum = input(0.08) //////////////////////////////////////////////////////////////////////////////// // BACKTESTING RANGE // From Date Inputs fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) fromYear = input(defval = 2019, title = "From Year", minval = 1970) // To Date Inputs toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) toYear = input(defval = 2020, title = "To Year", minval = 1970) // Calculate start/end date and time condition startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = true //////////////////////////////////////////////////////////////////////////////// psar = sar(start, increment, maximum) ema = ema(close, SlowEMALength) fastema = ema(close, FastEMALength) offset = (emaoffset / 100) * ema // Signals long = high[1] < psar[2] and high >= psar[1] and close > ema + offset or crossunder(ema, fastema) and close > psar and close > ema + offset short = low[1] > psar[2] and low <= psar[1] and close < ema - offset or crossover(ema, fastema) and close < psar and close < ema - offset // Plot PSAR plot(psar, title="PSAR", color = low < psar and not long ? green : red, trackprice=true) //Barcolor barcolor(close > psar and close > ema + offset and fastema > ema ? green : na) barcolor(close > psar and close < ema + offset or close > psar and fastema < ema ? white : na) barcolor(close < psar and close < ema - offset and fastema < ema and close? red : na) barcolor(close < psar and close > ema - offset or close < psar and fastema > ema ? white : na) //Plot EMA plot(ema, color=blue, linewidth=1, transp=0, title="Slow EMA") plot(fastema, color=purple, linewidth=1, transp=0, title="Fast EMA") if(high > psar) strategy.close("Short") if(low < psar) strategy.close("Long") if(long and time_cond) strategy.entry("Long", strategy.long, comment="Long") if(short and time_cond) strategy.entry("Short", strategy.short, comment="Short") if (not time_cond) strategy.close_all()