
Chiến lược theo dõi xu hướng siêu kháng cự chống đỡ là một chiến lược theo dõi xu hướng sáng tạo, nó kết hợp hai chỉ số phổ biến là điểm kháng cự chống đỡ và siêu xu hướng, đồng thời thêm một bộ lọc xu hướng bổ sung để tăng độ chính xác. Chiến lược này lấy cảm hứng từ kịch bản theo dõi xu hướng siêu kháng cự chống đỡ của Lonesome TheBlue, nhằm cung cấp cho các nhà giao dịch một công cụ theo dõi xu hướng đáng tin cậy, đồng thời giảm tối đa tín hiệu giả.
Chiến lược này dựa trên sự kết hợp của các điểm kháng cự hỗ trợ và các chỉ số xu hướng siêu, và bổ sung một bộ lọc xu hướng mạnh mẽ. Đầu tiên, nó tính toán các điểm cao và thấp hỗ trợ trong một chu kỳ được chỉ định, những điểm tham chiếu quan trọng rất quan trọng cho phân tích xu hướng. Bằng cách tính toán trung bình trọng lượng, các điểm kháng cự hỗ trợ này tạo thành một đường trung tâm, tiếp tục hoàn thiện toàn bộ chỉ số.
Tiếp theo, các yếu tố ATR được tạo ra theo đường trung và người dùng xác định sẽ được tạo ra. Các dải này sẽ tự điều chỉnh theo biến động của thị trường, tăng tính linh hoạt cho chiến lược.
Việc đưa ra bộ lọc xu hướng bổ sung cho chiến lược đã tăng cường thêm khả năng của nó. Bộ lọc này dựa trên đường trung bình di chuyển, đánh giá động về cường độ và hướng của xu hướng. Bằng cách kết hợp bộ lọc xu hướng này với tín hiệu siêu xu hướng của điểm kháng cự hỗ trợ ban đầu, chiến lược nhằm đưa ra quyết định giao dịch thông minh và đáng tin cậy hơn.
Tăng độ chính xác: Thêm bộ lọc xu hướng để tăng độ chính xác của chiến lược bằng cách xác nhận hướng xu hướng tổng thể trước khi tạo tín hiệu.
Tiếp tục xu hướng: tích hợp các điểm kháng cự và siêu xu hướng và bộ lọc xu hướng để kéo dài giao dịch trong thời gian xu hướng thị trường mạnh mẽ, do đó có khả năng tối đa hóa cơ hội lợi nhuận.
Giảm tín hiệu giả: Tính trung bình trọng lượng của chiến lược cộng với bộ lọc xu hướng giúp giảm thiểu tín hiệu giả và giảm nhảy vọt trong điều kiện thị trường không chắc chắn hoặc cân bằng.
Giao diện hỗ trợ và kháng cự: Chiến lược này tiếp tục cung cấp các mức hỗ trợ và kháng cự bổ sung dựa trên điểm hỗ trợ và kháng cự, cung cấp thông tin ngữ cảnh có giá trị cho các nhà giao dịch.
Tùy thuộc tham số: Chiến lược này rất nhạy cảm với tham số của chu kỳ ATR và ATR nhân, thiết lập tham số không phù hợp có thể dẫn đến giao dịch dư thừa hoặc bỏ lỡ cơ hội.
Xu hướng đảo ngược: Gần điểm đảo ngược xu hướng, chiến lược có thể tạo ra tín hiệu sai, dẫn đến tổn thất không cần thiết.
Tối ưu hóa quá mức: Các tham số có thể được kết hợp tốt nhất thông qua tối ưu hóa, nhưng không có tính tiên tiến. Sự khác biệt về hành vi và giống nên được xem xét ảnh hưởng đến lựa chọn tham số.
Rủi ro trống: Chiến lược sẽ đi vào trạng thái trống khi giá rời khỏi đường đi lên xuống. Điều này có thể làm mất cơ hội khi xu hướng hình thành lại.
Kết hợp với các chỉ số khác: Bạn có thể xem xét thêm các chỉ số như khối lượng giao dịch hoặc tỷ lệ biến động để tăng cường sự ổn định của chiến lược.
Các tham số động: Có thể nghiên cứu các phương pháp tự động tối ưu hóa hoặc điều chỉnh tham số theo môi trường thị trường để làm cho chiến lược thích ứng hơn.
Chiến lược dừng lỗ: Nghiên cứu làm thế nào để thiết kế các cơ chế dừng lỗ, kiểm soát hiệu quả các tổn thất đơn lẻ, trong trường hợp duy trì logic của chiến lược.
Tính thích ứng giống: Chiến lược đánh giá Parameter în diferite piețe și instrumente, optimizați parametrii în funcție de specificul fiecăruia.
Chiến lược theo dõi xu hướng kháng cự siêu hỗ trợ là một chiến lược định lượng đầy triển vọng. Nó có lợi thế độc đáo về nhiều khía cạnh như sự đơn giản, khả năng theo dõi xu hướng.
/*backtest
start: 2023-02-19 00:00:00
end: 2024-02-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// © Julien_Eche
// Strategy based on "Pivot Point Supertrend" Indicator by LonesomeTheBlue
//@version=4
strategy("PPS", overlay=true, initial_capital=500000, currency=currency.USD, default_qty_type=strategy.cash, default_qty_value=50000)
prd = input(defval = 2, title="Pivot Point Period", minval = 1, maxval = 50)
Factor=input(defval = 3, title = "ATR Factor", minval = 1, step = 0.1)
Pd=input(defval = 10, title = "ATR Period", minval=1)
showpivot = input(defval = false, title="Show Pivot Points")
showlabel = input(defval = true, title="Show Buy/Sell Labels")
showcl = input(defval = false, title="Show PP Center Line")
showsr = input(defval = false, title="Show Support/Resistance")
// get Pivot High/Low
float ph = pivothigh(prd, prd)
float pl = pivotlow(prd, prd)
// drawl Pivot Points if "showpivot" is enabled
plotshape(ph and showpivot, text="H", style=shape.labeldown, color=na, textcolor=color.red, location=location.abovebar, transp=0, offset = -prd)
plotshape(pl and showpivot, text="L", style=shape.labeldown, color=na, textcolor=color.lime, location=location.belowbar, transp=0, offset = -prd)
// calculate the Center line using pivot points
var float center = na
float lastpp = ph ? ph : pl ? pl : na
if lastpp
if na(center)
center := lastpp
else
//weighted calculation
center := (center * 2 + lastpp) / 3
// upper/lower bands calculation
Up = center - (Factor * atr(Pd))
Dn = center + (Factor * atr(Pd))
// get the trend
float TUp = na
float TDown = na
Trend = 0
TUp := close[1] > TUp[1] ? max(Up, TUp[1]) : Up
TDown := close[1] < TDown[1] ? min(Dn, TDown[1]) : Dn
Trend := close > TDown[1] ? 1: close < TUp[1]? -1: nz(Trend[1], 1)
Trailingsl = Trend == 1 ? TUp : TDown
// plot the trend
linecolor = Trend == 1 and nz(Trend[1]) == 1 ? color.lime : Trend == -1 and nz(Trend[1]) == -1 ? color.red : na
plot(Trailingsl, color = linecolor , linewidth = 2, title = "PP SuperTrend")
plot(showcl ? center : na, color = showcl ? center < hl2 ? color.blue : color.red : na)
// check and plot the signals
bsignal = Trend == 1 and Trend[1] == -1
ssignal = Trend == -1 and Trend[1] == 1
plotshape(bsignal and showlabel ? Trailingsl : na, title="Buy", text="Buy", location = location.absolute, style = shape.labelup, size = size.tiny, color = color.lime, textcolor = color.black, transp = 0)
plotshape(ssignal and showlabel ? Trailingsl : na, title="Sell", text="Sell", location = location.absolute, style = shape.labeldown, size = size.tiny, color = color.red, textcolor = color.white, transp = 0)
//get S/R levels using Pivot Points
float resistance = na
float support = na
support := pl ? pl : support[1]
resistance := ph ? ph : resistance[1]
// if enabled then show S/R levels
plot(showsr and support ? support : na, color = showsr and support ? color.lime : na, style = plot.style_circles, offset = -prd)
plot(showsr and resistance ? resistance : na, color = showsr and resistance ? color.red : na, style = plot.style_circles, offset = -prd)
// Trend Filter from SuperTrend Long Strategy
Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR = input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
// Combine the SuperTrend calculations
atr2 = sma(tr, Periods)
atr = changeATR ? atr(Periods) : atr2
up = src - (Multiplier * atr)
up1 = nz(up[1], up)
up := close[1] > up1 ? max(up, up1) : up
dn = src + (Multiplier * atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
// Moving Average as Trend Filter
periodes_ma = input(title="Moving Average Period", type=input.integer, defval=20)
src_ma = input(title="Moving Average Source", type=input.source, defval=close)
ma = sma(src_ma, periodes_ma)
// Strategy Entry Conditions
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2018, title = "From Year", minval = 999)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 999)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)
window() => time >= start and time <= finish ? true : false
// Combined entry conditions
longCondition = (trend == 1 and trend[1] == -1 and close > ma) or (bsignal and window())
shortCondition = (trend == -1 and trend[1] == 1 and close < ma) or (ssignal and window())
if (longCondition)
strategy.entry("BUY", strategy.long)
if (shortCondition)
strategy.close("BUY")
strategy.entry("SELL", strategy.short)
buy1 = barssince((trend == 1 and trend[1] == -1 and close > ma) or (bsignal and window()))
sell1 = barssince((trend == -1 and trend[1] == 1 and close < ma) or (ssignal and window()))
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na
barcolor(color1)