Chiến lược này là một hệ thống giao dịch định lượng dựa trên chỉ số WaveTrend và xu hướng theo sau. Nó kết hợp chỉ số WaveTrend với đường trung bình động để tạo thành một khuôn khổ quyết định giao dịch hoàn chỉnh. Chiến lược sử dụng EMA và SMA để tính giá trị xu hướng sóng và xu hướng thị trường tổng thể, xác định các bước ngoặt của thị trường thông qua ngưỡng mua quá mức và bán quá mức, và kết hợp các bộ lọc xu hướng để cải thiện độ chính xác giao dịch.
Lòng cốt của chiến lược được thực hiện thông qua các bước sau:
Chiến lược này xây dựng một hệ thống giao dịch mạnh mẽ bằng cách kết hợp thông minh chỉ số WaveTrend với các bộ lọc xu hướng. Trong khi duy trì tính đơn giản của hoạt động, nó đạt được phân tích thị trường toàn diện. Mặc dù có một số rủi ro, chiến lược có giá trị thực tế tốt và tiềm năng phát triển thông qua quản lý rủi ro thích hợp và tối ưu hóa liên tục.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-18 08:00:00 period: 1d basePeriod: 1d 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/ // © mojomarv //@version=6 strategy("WaveTrend with Trend Filter", shorttitle="WaveTrend Trend", overlay=false, initial_capital = 100000) // Inputs for the WaveTrend indicator inputLength = input.int(10, title="Channel Length", minval=1) avgLength = input.int(21, title="Average Length", minval=1) obLevel = input.float(45, title="Overbought Level") osLevel = input.float(-45, title="Oversold Level") showSignals = input.bool(true, title="Show Buy/Sell Signals") // Trend filter input maLength = input.int(500, title="Trend MA Length", minval=1) // Calculate WaveTrend values hlc_avg = (high + low + close) / 3 // Renamed from hlc3 to hlc_avg esa = ta.ema(hlc_avg, inputLength) d = ta.ema(math.abs(hlc_avg - esa), inputLength) k = (hlc_avg - esa) / (0.015 * d) ci = ta.ema(k, avgLength) tci = ta.ema(ci, avgLength) // Moving average for trend detection trendMA = ta.sma(close, maLength) // Determine trend bullishTrend = close > trendMA bearishTrend = close < trendMA // Generate signals with trend filter crossUp = ta.crossover(tci, osLevel) crossDown = ta.crossunder(tci, obLevel) // Plot WaveTrend plot(tci, title="WaveTrend Line", color=color.new(color.blue, 0), linewidth=2) hline(obLevel, "Overbought", color=color.red, linestyle=hline.style_dotted) hline(osLevel, "Oversold", color=color.green, linestyle=hline.style_dotted) hline(0, "Zero Line", color=color.gray, linestyle=hline.style_solid) // Plot moving average for trend visualization plot(trendMA, title="Trend MA", color=color.orange, linewidth=1) // Plot buy and sell signals plotshape(showSignals and crossUp, title="Buy Signal", location=location.belowbar, style=shape.labelup, color=color.new(color.green, 0), size=size.small) plotshape(showSignals and crossDown, title="Sell Signal", location=location.abovebar, style=shape.labeldown, color=color.new(color.red, 0), size=size.small) // Alerts alertcondition(crossUp, title="Buy Alert", message="WaveTrend Buy Signal (Trend Confirmed)") alertcondition(crossDown, title="Sell Alert", message="WaveTrend Sell Signal (Trend Confirmed)") alertcondition(bullishTrend, title="bull", message="WaveTrend Sell Signal (Trend Confirmed)") alertcondition(bearishTrend, title="bear", message="WaveTrend Sell Signal (Trend Confirmed)") // Strategy logic if crossUp and bullishTrend strategy.entry("Long", strategy.long) if crossDown strategy.close("Long") if crossDown and bearishTrend strategy.entry("Short", strategy.short) if crossUp strategy.close("Short")