
Chiến lược này kết hợp chỉ số SuperTrend và chỉ số DEMA để thực hiện một chiến lược giao dịch theo dõi xu hướng. Nó tạo ra tín hiệu mua khi giá vượt quá đường lên, tạo ra tín hiệu bán khi giá rơi xuống đường, kết hợp với DEMA để lọc tín hiệu giả. Chiến lược này được áp dụng cho các hành vi xu hướng, có thể theo dõi xu hướng một cách hiệu quả, lọc rung động.
Chiến lược này chủ yếu dựa trên chỉ số SuperTrend để xác định xu hướng giá. Chỉ số SuperTrend kết hợp với chỉ số ATR, có thể xác định xu hướng giá một cách hiệu quả. Khi giá tăng, nó sẽ hình thành đường lên, và khi giá giảm, nó sẽ hình thành đường xuống.
Để lọc các tín hiệu báo cáo sai, chiến lược này cũng kết hợp với chỉ số DEMA. Chỉ có tín hiệu mua khi giá vượt quá đường lên và cao hơn đường DEMA; chỉ có tín hiệu bán khi giá giảm xuống và thấp hơn đường DEMA. Điều này có thể lọc hiệu quả tín hiệu sai trong thị trường biến động.
Cụ thể, các tín hiệu giao dịch của chiến lược này sẽ có logic như sau:
Bằng cách thiết kế logic như vậy, bạn có thể làm theo xu hướng và tránh thường xuyên mở vị trí trong thị trường biến động.
Phương pháp giải quyết rủi ro:
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Tối ưu hóa tham số của chỉ số SuperTrend. Bạn có thể thử nghiệm các tham số khác nhau của chu kỳ ATR để tìm ra sự kết hợp tham số tốt nhất.
Tối ưu hóa tham số chỉ số DEMA. Bạn có thể thử nghiệm các tham số khác nhau để xác định cài đặt tham số tối ưu nhất.
Tăng cơ chế dừng lỗ. Bạn có thể đặt mức dừng lỗ theo giá trị ATR, tránh dừng lỗ quá lớn.
Thêm quy tắc lọc tín hiệu. Bạn có thể thêm xác nhận các chỉ số khác tại các điểm quan trọng, tránh tín hiệu báo cáo sai. Ví dụ như xác nhận các chỉ số năng lượng tăng tại các điểm biến xu hướng.
Tối ưu hóa quản lý vị trí. Bạn có thể điều chỉnh vị trí tùy theo biến động của thị trường và tình trạng rủi ro.
Chiến lược này tích hợp các ưu điểm của chỉ số SuperTrend và chỉ số DEMA, thực hiện chiến lược giao dịch định lượng dựa trên theo dõi xu hướng và lọc tín hiệu. Có nhiều không gian để tối ưu hóa chiến lược, có thể cải thiện hơn nữa sự ổn định và khả năng lợi nhuận của chiến lược thông qua các biện pháp như tối ưu hóa tham số, cơ chế dừng lỗ và lọc tín hiệu. Ý tưởng chiến lược đơn giản, rõ ràng và dễ thực hiện, có thể kiểm soát rủi ro tổng thể, phù hợp với giao dịch định lượng thực tế.
/*backtest
start: 2023-11-07 00:00:00
end: 2023-12-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy('Krish\'s Supertrend Strategy', overlay=true)
// Supertrend Settings
Periods = input(title='ATR Period', defval=10)
src = input(hl2, title='Source')
Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=3.0)
changeATR = input(title='Change ATR Calculation Method ?', defval=true)
showsignals = input(title='Show Buy/Sell Signals ?', defval=true)
highlighting = input(title='Highlighter On/Off ?', defval=true)
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
up = src - Multiplier * atr
up1 = nz(up[1], up)
up := close[1] > up1 ? math.max(up, up1) : up
dn = src + Multiplier * atr
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.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
upPlot = plot(trend == 1 ? up : 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 and showsignals ? 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(trend == 1 ? na : dn, 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 and showsignals ? 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))
// DEMA Settings
dema_length = 200
dema = ta.ema(close, dema_length)
// Long and Short Conditions
longCondition = buySignal and close > dema
shortCondition = sellSignal and close < dema
// Strategy Entry and Exit
strategy.entry('Long', strategy.long, when=longCondition)
strategy.entry('Short', strategy.short, when=shortCondition)
strategy.close('Long', when=ta.change(trend) or close < dema)
strategy.close('Short', when=ta.change(trend) or close > dema)
// Plotting
mPlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? trend == 1 ? color.green : color.white : color.white
shortFillColor = highlighting ? trend == -1 ? color.red : color.white : color.white
fill(mPlot, upPlot, title='UpTrend Highlighter', color=longFillColor, transp=90)
fill(mPlot, dnPlot, title='DownTrend Highlighter', color=shortFillColor, transp=90)
// Alerts (using plotshape for alerts in strategies)
plotshape(buySignal, title='SuperTrend Buy', color=color.new(color.green, 0), style=shape.triangleup, size=size.small)
plotshape(sellSignal, title='SuperTrend Sell', color=color.new(color.red, 0), style=shape.triangledown, size=size.small)
changeCond = trend != trend[1]
plotshape(changeCond, title='SuperTrend Direction Change', color=color.new(color.yellow, 0), style=shape.triangleup, size=size.small)