Chiến lược SAR Parabolic Trailing Stop Loss

Tác giả:ChaoZhang, Ngày: 2023-09-16 18:54:28
Tags:

Tổng quan

Chiến lược dừng lỗ kéo theo của Parabolic SAR là một chiến lược giao dịch dựa trên chỉ số Parabolic SAR. Nó nhằm mục đích xác định các điểm đảo ngược xu hướng và các vị trí thoát ra kịp thời khi xu hướng đảo ngược.

Chiến lược logic

Chỉ số SAR Parabolic có thể xác định xu hướng giá và cung cấp tín hiệu đảo ngược tiềm năng. Khi chấm SAR vượt qua trên ngọn nến, nó đại diện cho sự thay đổi từ tăng sang giảm; khi chấm SAR vượt qua dưới ngọn nến, nó đại diện cho sự thay đổi từ giảm sang tăng.

Dựa trên tính năng này của chỉ số SAR Parabolic, chiến lược này xác định sự đảo ngược xu hướng khi chấm SAR băng qua ngọn nến và thực hiện các mục dài hoặc ngắn tương ứng.

  1. Tính toán các giá trị SAR Parabolic.

  2. Xác định xem có tín hiệu đảo ngược xu hướng hay không. Nếu dấu chấm SAR đi từ phía trên xuống phía dưới nến, nó đại diện cho tín hiệu giảm, đi ngắn; nếu dấu chấm SAR đi từ phía dưới lên phía trên nến, nó đại diện cho tín hiệu tăng, đi dài.

  3. Nhập vị trí khi giao thoa xảy ra, và thoát khỏi vị trí với mức dừng lỗ khi chấm SAR băng qua ngọn nến theo hướng ngược lại một lần nữa.

Ưu điểm

  • Sử dụng chỉ số Parabolic SAR để xác định các điểm đảo ngược xu hướng, tránh giao dịch chống lại xu hướng.

  • Nhập vị trí nhanh chóng khi các tín hiệu đảo ngược được xác định, nắm bắt sự thay đổi xu hướng.

  • Thiết lập stop loss tại điểm giao thông SAR để dừng nhanh và kiểm soát mất mát kịp thời.

  • Đơn giản và rõ ràng chiến lược logic, dễ thực hiện.

Rủi ro và giảm thiểu

  • Chỉ số SAR Parabolic có thể tạo ra nhiều tín hiệu sai, gây ra các giao dịch không cần thiết.

  • Có xu hướng bị đánh bại trong các thị trường đảo ngược nhanh.

  • Cho phép một số không gian di chuyển trong phạm vi dừng lỗ.

  • Việc dựa vào một chỉ số duy nhất làm cho chiến lược dễ bị hạn chế cụ thể của thị trường.

Kết luận

Parabolic SAR trailing stop loss sử dụng khả năng xác định xu hướng của chỉ số Parabolic SAR để nhanh chóng dừng lại và đảo ngược hướng khi xu hướng đảo ngược. Logic chiến lược đơn giản và rõ ràng. Tuy nhiên, chỉ dựa vào chỉ số Parabolic SAR có những hạn chế. Trong thực tế, điều kiện thị trường nên được xem xét, các tham số được điều chỉnh phù hợp và các chỉ số kỹ thuật khác được kết hợp để cải thiện hiệu suất.


/*backtest
start: 2023-08-16 00:00:00
end: 2023-09-15 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Parabolic SAR Strategy (on close) [QuantNomad]", shorttitle="SAR Strategy [QN]", overlay=true)

start     = input(0.02)
increment = input(0.02)
maximum   = input(0.2)

psar      = 0.0 // PSAR
af        = 0.0 // Acceleration Factor
trend_dir = 0   // Current direction of PSAR
ep        = 0.0 // Extreme point

sar_long_to_short = trend_dir[1] == 1  and close <= psar[1] // PSAR switches from long to short
sar_short_to_long = trend_dir[1] == -1 and close >= psar[1] // PSAR switches from short to long

trend_change = barstate.isfirst[1] or sar_long_to_short or sar_short_to_long

// Calculate trend direction
trend_dir    := barstate.isfirst[1] and close[1] > open[1] ? 1 : 
   barstate.isfirst[1] and close[1] <= open[1] ? -1 : 
   sar_long_to_short ? -1 : 
   sar_short_to_long ?  1 : nz(trend_dir[1])

// Calculate  Acceleration Factor
af := trend_change ? start : 
   (trend_dir == 1 and high > ep[1]) or  
   (trend_dir == -1 and low < ep[1]) ? 
   min(maximum, af[1] + increment) : 
   af[1]

// Calculate extreme point
ep := trend_change and trend_dir == 1 ? high :  
   trend_change and trend_dir == -1 ? low : 
   trend_dir == 1 ? max(ep[1], high) : 
   min(ep[1], low)

// Calculate PSAR
psar := barstate.isfirst[1] and close[1] > open[1] ? low[1] : 
   barstate.isfirst[1] and close[1] <= open[1] ? high[1] : 
   trend_change ? ep[1] :    
   trend_dir == 1 ? psar[1] + af * (ep - psar[1]) : psar[1] - af * (psar[1] - ep) 

plot(psar, style=plot.style_cross, color=trend_dir == 1 ? color.green : color.red,  linewidth = 2)

// Strategy 
strategy.entry("Long",  true,  when = sar_short_to_long)
strategy.entry("Short", false, when = sar_long_to_short)

Thêm nữa