
Chiến lược này tích hợp nhiều chỉ số kỹ thuật, bao gồm chỉ số siêu xu hướng, đường trung bình di chuyển kép và dải Brin, để tận dụng lợi thế của các chỉ số để đưa ra tín hiệu giao dịch chính xác hơn.
Chiến lược sử dụng ATR và giá trị trung bình của 12 chu kỳ để tính toán đường ray lên và xuống của quá xu hướng, để đánh giá các tín hiệu đa đầu và trống dựa trên giá phá vỡ đường ray lên và xuống. Đồng thời, sử dụng đường trung bình di chuyển hai chiều của 200 chu kỳ như một chỉ số hỗ trợ để đánh giá xu hướng. Ngoài ra, chiến lược cũng sử dụng Brin để xác định thời gian tốt nhất để vào thị trường và dừng lỗ.
Khi giá vượt quá xu hướng lên đường hoặc xuống đường, dấu hiệu và chữ “Buy” hoặc “Sell” sẽ được vẽ trên đường dẫn tương ứng. Đồng thời, tín hiệu di động sẽ được gửi.
Đường trung bình di chuyển hai chiều được vẽ ở trên hoặc dưới đường cong giá, được biểu thị bằng màu trắng. Nó được sử dụng để xác định hướng của xu hướng tổng thể.
Bắt lưng Brin được sử dụng để tìm thời gian tốt nhất để vào thị trường và dừng lỗ. Đường đi lên và xuống của nó tạo ra một kênh xung quanh biến động giá, có thể được sử dụng để xác định khi nào giá đã thoát khỏi phạm vi bình thường, tức là biến động quá thời gian.
Sau khi đưa ra thị trường, chiến lược sử dụng phương thức dừng lỗ và dừng để khóa lợi nhuận hoặc giảm tổn thất. Việc giảm bớt tự động được thực hiện bằng cách thiết lập giá dừng lỗ và giá dừng.
Chiến lược này tích hợp nhiều chỉ số để tận dụng lợi thế của từng chỉ số để tạo ra tín hiệu giao dịch chính xác hơn.
Hypertrend có khả năng lọc tiếng ồn thị trường, tránh giao dịch thường xuyên. Đường trung bình di chuyển hai chỉ số có thể đánh giá xu hướng tổng thể, tránh giao dịch ngược. Brinband có thể nắm bắt thời gian tốt nhất để vào thị trường và dừng lỗ.
Sử dụng tín hiệu di động có thể nhận được lời khuyên giao dịch kịp thời. Hạn chế tự động dừng lỗ có thể khóa lợi nhuận và giảm tổn thất.
Vì chiến lược tích hợp nhiều chỉ số, tăng sự phức tạp của chiến lược và tăng khả năng sai. Cài đặt chỉ số cũng có thể dẫn đến cơ hội giao dịch bị bỏ lỡ hoặc tạo ra tín hiệu sai.
Ngoài ra, thiết lập dừng lỗ quá mạnh có thể gây ra tổn thất lớn hơn. Sự ổn định của tín hiệu di động cũng sẽ ảnh hưởng đến hiệu quả của dừng lỗ kịp thời.
Bạn có thể thử nghiệm các thiết lập tham số khác nhau để tìm kiếm sự kết hợp tham số tốt nhất. Bạn cũng có thể điều chỉnh tham số theo thị trường khác nhau.
Bạn có thể thử sử dụng chỉ một số chỉ số, giảm khả năng tín hiệu sai. Hoặc thêm các chỉ số hỗ trợ khác để tối ưu hóa.
Các điều kiện dừng và dừng cũng có thể được điều chỉnh, thiết lập theo dõi dừng hoặc dừng một phần.
Chiến lược này tích hợp các lợi thế của nhiều chỉ số kỹ thuật để thực hiện phán đoán tín hiệu giao dịch, có tính thực tế mạnh mẽ. Nhưng cũng phải đối mặt với một số rủi ro, cần phải liên tục kiểm tra và tối ưu hóa để thực sự sử dụng một cách tự động và thu được lợi nhuận ổn định.
/*backtest
start: 2024-01-23 00:00:00
end: 2024-02-22 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © zhuenrong
//@version=4
strategy("Supertrend + DEMA + Bollinger Bands", overlay=true)
// 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")
// === Stop LOSS ===
if strategy.position_size>0
strategy.exit("Stop Loss/Profit Long","Buy", stop=strategy.position_avg_price*100, limit=strategy.position_avg_price*1.1)
if strategy.position_size<0
strategy.exit("Stop Loss/Profit Short","Sell", stop=strategy.position_avg_price*100, limit=strategy.position_avg_price*1.1)