该策略是一个基于多重时间周期的趋势跟踪系统,结合了周线50周期成交量加权移动平均线(VWMA)作为大趋势过滤器,并使用当前时间周期的200周期VWMA和HLCC4价格突破作为具体的交易信号。这是一个仅做多的策略,通过严格的趋势确认和多重时间周期验证来提高交易的可靠性。
策略的核心逻辑包含以下几个关键环节: 1. 使用周线50周期VWMA作为大趋势判断标准,只有当价格位于该均线之上时才允许开仓。 2. 入场条件需要满足两个连续K线收盘价都在200周期VWMA之上,并且第二根K线的收盘价要高于第一根K线的HLCC4均价。 3. 出场信号基于日线级别,当日线收盘价跌破日线200周期VWMA时平仓。 4. 策略采用固定仓位管理方式,每次交易使用账户权益的10%。 5. 回测周期限制在最近5年内,确保策略在近期市场环境下的有效性。
这是一个设计严谨的趋势跟踪策略,通过多重时间周期的配合和严格的交易条件,实现了较好的风险控制。策略的核心优势在于其完善的趋势确认机制和清晰的交易逻辑,适合在强势市场中把握中长期趋势性机会。通过建议的优化方向,策略还有进一步提升的空间。
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-17 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("Long-Only 200 WVMA + HLCC4 Strategy (Weekly 50 VWMA Filter, Daily Exit, Last 5 Years)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// Parameters
wvma_length = input(200, title="200 WVMA Length")
// Restrict backtesting to the last 5 years
var int backtest_start_year = na
if na(backtest_start_year)
backtest_start_year = year - 5 // Calculate the start year (5 years ago)
// Check if the current time is within the last 5 years
within_backtest_period = true
// Fetch Weekly 50 VWMA
weekly_vwma_50 = request.security(syminfo.tickerid, "W", ta.vwma(close, 50))
// Basic Condition: Price must be above Weekly 50 VWMA
above_weekly_vwma = (close > weekly_vwma_50)
// 200 Weighted Volume Moving Average (WVMA) on the current timeframe
wvma = ta.vwma(close, wvma_length)
plot(wvma, title="200 WVMA", color=color.blue, linewidth=2)
// HLCC4 Calculation
hlcc4 = (high + low + close + close) / 4
// Fetch Daily 200 WVMA
daily_wvma = request.security(syminfo.tickerid, "D", ta.vwma(close, wvma_length))
// Fetch Daily Close
daily_close = request.security(syminfo.tickerid, "D", close)
// Long Entry Condition
long_condition = (close[1] > wvma[1]) and (close > wvma) and (close > hlcc4[1])
// Long Exit Condition (Daily Close below Daily 200 WVMA)
exit_condition = (daily_close < daily_wvma)
// Check if there is an open position
var bool in_position = false
// Execute trades only within the last 5 years and above Weekly 50 VWMA
if within_backtest_period and above_weekly_vwma
if (long_condition and not in_position)
strategy.entry("Buy", strategy.long)
in_position := true
if (exit_condition and in_position)
strategy.close("Buy")
in_position := false
// Plotting Entry and Exit Signals
plotshape(series=long_condition and not in_position and within_backtest_period and above_weekly_vwma, style=shape.labelup, location=location.belowbar, color=color.green, text="Buy", size=size.small)
plotshape(series=exit_condition and in_position and within_backtest_period and above_weekly_vwma, style=shape.labeldown, location=location.abovebar, color=color.red, text="Exit", size=size.small)
// Highlight background for trend direction
bgcolor(long_condition and not in_position and within_backtest_period and above_weekly_vwma ? color.new(color.green, 90) : na, title="Uptrend Background")
bgcolor(exit_condition and in_position and within_backtest_period and above_weekly_vwma ? color.new(color.red, 90) : na, title="Exit Background")
// Plot Weekly 50 VWMA
plot(weekly_vwma_50, title="Weekly 50 VWMA", color=color.orange, linewidth=2)