Chiến lược này sử dụng các chỉ số SAR (dừng lỗ) và EMA (đường trung bình) để lọc để cải thiện độ chính xác của tín hiệu giao dịch. Chiến lược này được sử dụng cho các nhà giao dịch theo dõi xu hướng.
Tín hiệu nhiều được tạo ra khi SAR nằm dưới giá và giá cao hơn đường trung bình EMA chậm và giá thấp hơn đường trung bình EMA chậm. Đồng thời, một bộ lọc bổ sung được thực hiện thông qua giao thoa giữa đường trung bình EMA nhanh và đường trung bình EMA chậm. Điều này giúp tránh các tín hiệu sai có thể xảy ra khi chỉ số SAR được sử dụng một mình.
Cụ thể, các điều kiện kích hoạt của nhiều tín hiệu là: 1) SAR nằm dưới giá đóng cửa ngày hôm qua và nằm trên giá đóng cửa hiện tại; 2) Giá đóng cửa hiện tại cao hơn giá EMA trung bình chậm cộng với độ lệch hoặc vượt qua EMA trung bình chậm dưới EMA trung bình nhanh; 3) Giá đóng cửa hiện tại cao hơn giá SAR và EMA trung bình chậm cộng với độ lệch.
Các điều kiện kích hoạt tín hiệu mở cửa là: 1) SAR nằm trên giá đóng cửa hôm qua và nằm dưới giá đóng cửa hiện tại; 2) Giá đóng cửa hiện tại thấp hơn giá EMA trung bình chậm hoặc vượt qua đường trung bình EMA chậm trên đường trung bình EMA nhanh; 3) Giá đóng cửa hiện tại thấp hơn giá SAR và đường trung bình EMA chậm.
Chiến lược này kết hợp các chỉ số SAR và bộ lọc đồng tuyến EMA để xác định tốt hơn hướng xu hướng và giảm tín hiệu giả.
Những ưu điểm:
Chiến lược này cũng có một số rủi ro, bao gồm:
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Chiến lược này tích hợp lợi thế của chỉ số SAR và đường trung bình EMA để thiết kế một chiến lược theo dõi xu hướng linh hoạt hơn. Nhìn chung, chiến lược này có khả năng xác định hướng xu hướng thành công và có thể đạt được hiệu quả tốt hơn 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()