
Chiến lược này kết hợp các đường trung bình di chuyển chỉ số 8 chu kỳ và 21 chu kỳ (EMA) và các chỉ số SAR parallax để nắm bắt xu hướng và quản lý rủi ro. Chiến lược mở và đóng các vị trí dựa trên các điều kiện giao thoa và hành vi giá cụ thể và xác định các quy tắc xuất phát bao gồm dừng cố định và buộc phải đóng vị trí trong một khoảng thời gian nhất định.
Chiến lược này sử dụng hai chu kỳ khác nhau của EMA (chu kỳ 8 và chu kỳ 21) và chỉ số SAR đường thẳng để xác định các điều kiện mở và đóng. Chiến lược mở vị trí đầu nhiều khi EMA ngắn hạn giao trên EMA dài hạn và giá đóng cao hơn SAR; chiến lược mở vị trí đầu trống khi EMA ngắn hạn giao dưới EMA dài hạn và giá đóng thấp hơn SAR.
Chiến lược kết hợp EMA đường trung bình và đường ngang SAR cố gắng nắm bắt xu hướng và kiểm soát rủi ro bằng cách kết hợp hai chỉ số kỹ thuật phổ biến. Chiến lược này đơn giản và dễ hiểu, phù hợp để người mới bắt đầu học và sử dụng. Tuy nhiên, chiến lược này cũng có một số hạn chế, chẳng hạn như không thích ứng với biến động thị trường, thiếu sự cân nhắc về cảm xúc thị trường và các yếu tố cơ bản. Do đó, trong ứng dụng thực tế, chiến lược cần được tối ưu hóa và cải thiện để tăng cường sự ổn định và khả năng sinh lợi của nó tùy theo thị trường và loại giao dịch cụ thể.
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA and Parabolic SAR Strategy", overlay=true)
// Input parameters for EMAs and Parabolic SAR
emaShortPeriod = input.int(8, title="Short EMA Period")
emaLongPeriod = input.int(21, title="Long EMA Period")
sarStart = input.float(0.02, title="Parabolic SAR Start")
sarIncrement = input.float(0.02, title="Parabolic SAR Increment")
sarMaximum = input.float(0.2, title="Parabolic SAR Maximum")
fixedSL = input.int(83, title="Fixed Stop Loss (pts)")
// Calculate EMAs and Parabolic SAR
emaShort = ta.ema(close, emaShortPeriod)
emaLong = ta.ema(close, emaLongPeriod)
sar = ta.sar(sarStart, sarIncrement, sarMaximum)
// Entry conditions
longCondition = ta.crossover(emaShort, emaLong) and close > sar
shortCondition = ta.crossunder(emaShort, emaLong) and close < sar
// Exit conditions
longExitCondition = close < sar
shortExitCondition = close > sar
// Strategy entry and exit
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
if (longExitCondition)
strategy.close("Long")
if (shortExitCondition)
strategy.close("Short")
// Fixed Stop Loss
strategy.exit("Long Exit", "Long", stop=close - fixedSL * syminfo.mintick)
strategy.exit("Short Exit", "Short", stop=close + fixedSL * syminfo.mintick)
// Exit all positions at 15:15
exitHour = 15
exitMinute = 15
exitTime = timestamp(year(timenow), month(timenow), dayofmonth(timenow), exitHour, exitMinute)
if (timenow >= exitTime)
strategy.close_all()
// Plot EMAs and Parabolic SAR
plot(emaShort, color=color.blue, title="8 EMA")
plot(emaLong, color=color.red, title="21 EMA")
plot(sar, style=plot.style_cross, color=color.green, title="Parabolic SAR")