
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à theo dõi xu hướng. Nó tạo thành một khung quyết định giao dịch hoàn chỉnh bằng cách kết hợp chỉ số WaveTrend với đường trung bình di chuyển. Chiến lược sử dụng EMA và SMA để tính toán giá trị xu hướng sóng và xu hướng tổng thể của thị trường, để xác định điểm biến đổi của thị trường bằng cách thiết lập thềm mua bán vượt quá giá trị và kết hợp với bộ lọc xu hướng để cải thiện độ chính xác của giao dịch.
Nền tảng 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 vững chắc bằng cách kết hợp một cách khéo léo các chỉ số WaveTrend và bộ lọc xu hướng. Chiến lược này thực hiện phân tích toàn diện về thị trường trong khi vẫn duy trì hoạt động đơn giản. Mặc dù có một số rủi ro, nhưng với quản lý rủi ro hợp lý và tối ưu hóa liên tục, chiến lược này có giá trị thực tế và tiềm năng phát triển tốt.
/*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")