Chỉ số DEMA được sử dụng để lọc các tín hiệu sai. Chiến lược này hoạt động tốt cho các thị trường xu hướng và có thể theo dõi xu hướng và lọc các hợp nhất hiệu quả.
Cốt lõi của chiến lược này dựa trên chỉ số SuperTrend để xác định hướng xu hướng của giá. Chỉ số SuperTrend kết hợp chỉ số ATR và có thể xác định hiệu quả xu hướng giá. Khi giá tăng, một dải trên sẽ hình thành, và khi giá giảm, một dải dưới sẽ hình thành. Một sự đột phá từ dải dưới báo hiệu một sự đảo ngược xu hướng và tạo ra tín hiệu mua. Một sự đột phá từ dải trên báo hiệu một sự đảo ngược xu hướng và tạo ra tín hiệu bán.
Để lọc các tín hiệu sai, chiến lược này cũng kết hợp chỉ số DEMA. Các tín hiệu mua chỉ được tạo ra khi giá vượt qua dải trên và nằm trên đường DEMA. Các tín hiệu bán chỉ được tạo ra khi giá vượt qua dải dưới và nằm dưới đường DEMA. Điều này có hiệu quả lọc các tín hiệu sai trong các thị trường dao động.
Cụ thể, logic tín hiệu giao dịch là như sau:
Thông qua thiết kế logic này, chiến lược có thể theo dõi xu hướng trong các thị trường xu hướng và tránh thường xuyên mở các vị trí trong các thị trường khác nhau.
Quản lý rủi ro:
Chiến lược có thể được tăng cường từ các khía cạnh sau:
Tối ưu hóa tham số SuperTrend. Kiểm tra các kết hợp thời gian ATR khác nhau để tìm các tham số tối ưu.
DEMA tối ưu hóa tham số. Kiểm tra các giá trị khác nhau để xác định cài đặt tối ưu.
Thêm cơ chế dừng lỗ. Đặt dừng lỗ dựa trên giá trị ATR để ngăn chặn dừng quá lớn.
Thêm bộ lọc tín hiệu. Tăng xác nhận từ các chỉ số khác tại các điểm chính để ngăn chặn tín hiệu sai. Ví dụ, thêm xác nhận khối lượng tại các điểm đảo ngược xu hướng.
Cải thiện kích thước vị trí. Điều chỉnh kích thước năng động dựa trên biến động thị trường và rủi ro.
Chiến lược này kết hợp các điểm mạnh của các chỉ số SuperTrend và DEMA để thực hiện một chiến lược giao dịch định lượng dựa trên việc theo dõi xu hướng và lọc tín hiệu. Có nhiều chỗ để tối ưu hóa thông qua điều chỉnh tham số, dừng lỗ và bộ lọc tín hiệu để cải thiện hơn nữa sự ổn định và lợi nhuận.
/*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)