Chiến lược theo dõi xu hướng kép là một chiến lược tổng hợp kết hợp chỉ số siêu xu hướng, đường trung bình chuyển động nhân tố kép (DEMA) và băng Bollinger. Nó nhằm mục đích nắm bắt kịp thời tín hiệu mua và bán khi xu hướng đảo ngược bằng cách tận dụng lợi thế của nhiều chỉ số kỹ thuật.
Chiến lược bao gồm ba phần chính:
Chỉ số siêu xu hướng: Tính toán đường đột phá lên và đường đột phá xuống để xác định hướng xu hướng hiện tại. Nó tạo ra tín hiệu mua khi giá phá vỡ từ đường siêu xu hướng lên, và bán tín hiệu khi giá phá vỡ xuống.
DEMA (Double Exponential Moving Average): Một chỉ số theo dõi xu hướng kết hợp các tính năng của đường trung bình di chuyển đơn giản và đường trung bình di chuyển theo cấp số nhân, có thể phản ứng với sự thay đổi giá nhanh hơn. Chiến lược thiết lập DEMA 200 ngày để đánh giá hướng xu hướng dài hạn.
Bollinger Bands: đại diện cho phạm vi biến động của giá.
Khi chỉ số Supertrend và DEMA đều phát ra tín hiệu mua / bán, chiến lược đi vào vị trí tương ứng.
Sự kết hợp của nhiều chỉ số làm giảm tín hiệu sai.
Chỉ số siêu xu hướng không nhạy cảm với những thay đổi giá nhỏ và chỉ tạo ra tín hiệu tại các điểm chuyển hướng xu hướng, tránh tần suất giao dịch quá cao.
DEMA đường cong trơn tru đánh giá chính xác và đáng tin cậy xu hướng dài hạn.
Bollinger Bands giúp xác định các điểm đảo ngược xu hướng.
Các thông số siêu xu hướng quá nhạy có thể tạo ra nhiều tiếng ồn hơn.
Thời gian DEMA dài dẫn đến khả năng theo dõi xu hướng kém có thể kiểm tra thời gian ngắn như 100 ngày.
Các tín hiệu không nhất quán khi kết hợp phán đoán của nhiều chỉ số.
Kiểm tra các khoảng thời gian ATR và các thông số nhân khác nhau để tìm ra sự kết hợp tối ưu cho chỉ số siêu xu hướng.
Tối ưu hóa tham số thời gian DEMA.
Thêm các chỉ số phụ khác như KDJ, MACD v.v.
Đưa ra các chiến lược dừng lỗ.
Chiến lược theo dõi xu hướng kép kết hợp các điểm mạnh của Supertrend, DEMA và Bollinger Bands bằng cách sử dụng nhiều chỉ số, cải thiện chất lượng tín hiệu trong khi nắm bắt xu hướng.
/*backtest start: 2023-01-09 00:00:00 end: 2024-01-15 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Supertrend + DEMA + Bollinger Bands", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, precision=2) // Input parameters for Supertrend atrLength = input(title="ATR Period", type=input.integer, defval=12) 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) showSupertrend = input(title="Show Supertrend Indicator?", type=input.bool, defval=true) // Input parameters for DEMA demaLength = input(200, title="DEMA Period") showDEMA = input(title="Show DEMA Indicator?", type=input.bool, defval=true) // Calculate ATR for Supertrend atr2 = sma(tr, atrLength) atr = changeATR ? atr(atrLength) : atr2 // Calculate Supertrend 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 // Plot Supertrend upPlot = plot(showSupertrend ? (trend == 1 ? up : na) : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0)) buySignal = trend == 1 and trend[1] == -1 plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0)) plotshape(buySignal ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.new(color.white, 0)) dnPlot = plot(showSupertrend ? (trend == 1 ? na : dn) : na, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0)) sellSignal = trend == -1 and trend[1] == 1 plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0)) plotshape(sellSignal ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.new(color.white, 0)) mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0) longFillColor = (trend == 1 ? color.new(color.green, 80) : color.new(color.white, 0)) shortFillColor = (trend == -1 ? color.new(color.red, 80) : color.new(color.white, 0)) fill(mPlot, upPlot, title="UpTrend Highlighter", color=longFillColor) fill(mPlot, dnPlot, title="DownTrend Highlighter", color=shortFillColor) // Alert conditions alertcondition(buySignal, title="Custom Supertrend Buy", message="Custom Supertrend Buy!") alertcondition(sellSignal, title="Custom Supertrend Sell", message="Custom Supertrend Sell!") // Calculate DEMA ema1 = ema(close, demaLength) dema = 2 * ema1 - ema(ema1, demaLength) // Plot DEMA with white color plot(showDEMA ? dema : na, color=color.new(color.white, 0), title="DEMA", linewidth=2) // Add push notification on mobile if buy and sell occurred if (buySignal) strategy.entry("Buy", strategy.long) strategy.exit("Sell") alert("Buy Signal - Supertrend") if (sellSignal) strategy.entry("Sell", strategy.short) strategy.exit("Cover") alert("Sell Signal - Supertrend")