Chiến lược theo dõi xu hướng SAR Parabolic

Tác giả:ChaoZhang, Ngày: 2024-01-18 12:21:17
Tags:

img

Tổng quan

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.

Chiến lược logic

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à:

  1. SAR thấp hơn mức đóng trước và cao hơn mức đóng hiện tại;
  2. Hiện tại đóng cửa là trên EMA chậm cộng với offset hoặc EMA nhanh vượt qua dưới EMA chậm;
  3. Hiện tại đóng cửa là trên giá trị SAR và EMA chậm cộng với offset.

Các điều kiện nhập cảnh ngắn là:

  1. SAR cao hơn mức đóng trước và thấp hơn mức đóng hiện tại;
  2. Hiện tại đóng cửa dưới EMA chậm trừ offset hoặc EMA nhanh vượt qua EMA chậm;
  3. Hiện tại đóng cửa dưới giá trị SAR và EMA chậm trừ offset.

Phân tích lợi thế

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à:

  1. SAR có thể phản ứng nhanh chóng với sự thay đổi giá và xác định các điểm đảo ngược xu hướng.
  2. Việc lọc EMA xác nhận thêm hướng xu hướng và tránh các tín hiệu sai khi sử dụng SAR một mình.
  3. Crossover giữa EMA nhanh và chậm cung cấp độ chính xác tín hiệu bổ sung.
  4. Lợi nhuận có thể được cải thiện thông qua tối ưu hóa tham số.

Phân tích rủi ro

Có một số rủi ro cho chiến lược này:

  1. SAR và EMA có thể tạo ra tín hiệu không chính xác trong các thị trường giới hạn phạm vi, ảnh hưởng đến lợi nhuận. Điều này có thể được giảm thông qua tối ưu hóa tham số.
  2. EMA có hiệu ứng chậm trễ và có thể bỏ lỡ các điểm đầu vào tốt nhất khi xu hướng đảo ngược.
  3. Stop loss có thể bị tấn công dễ dàng trong thời gian biến động cao, gây ra tổn thất cao hơn.

Hướng dẫn tối ưu hóa

Chiến lược này có thể được tối ưu hóa từ các khía cạnh sau:

  1. Tối ưu hóa các thông số SAR như bước và tối đa để làm cho nó nhạy cảm hơn.
  2. Tối ưu hóa thời gian EMA chậm và nhanh để tìm kết hợp tối ưu.
  3. Tối ưu hóa EMA offset để giảm tín hiệu sai.
  4. Thêm các chỉ số khác như MACD và KDJ để lọc và chính xác thêm.
  5. Tối ưu hóa chiến lược dừng lỗ để giảm lỗ cho mỗi giao dịch.

Kết luận

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()

Thêm nữa