这是一个基于三条简单移动平均线(SMA)的趋势跟踪策略。该策略利用21、50和100周期移动平均线的交叉和位置关系来识别市场趋势,并在合适的时机进行交易。策略主要在5分钟时间框架上运行,同时建议参考30分钟图表进行趋势确认。
策略使用三重过滤机制来确定交易信号: 1. 使用21周期均线作为快速均线,用于捕捉短期价格变动 2. 使用50周期均线作为中期均线,与快速均线形成交叉信号 3. 使用100周期均线作为趋势过滤器,确保交易方向与主趋势一致
买入条件需同时满足: - 21均线向上穿越50均线 - 21均线和50均线都位于100均线之上
卖出条件需同时满足: - 21均线向下穿越50均线 - 21均线和50均线都位于100均线之下
风险控制建议: - 设置止损位于最近的重要低点下方 - 结合更大时间周期确认趋势 - 避免在横盘震荡市场交易 - 定期评估和优化策略参数
这是一个结构完整、逻辑清晰的趋势跟踪策略。通过三重均线过滤和趋势确认机制,能够有效降低虚假信号,提高交易成功率。策略具有良好的可扩展性,可以根据不同市场环境进行优化调整。建议在实盘交易前进行充分的回测和参数优化。
/*backtest
start: 2024-02-21 00:00:00
end: 2024-06-08 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Vezpa
//@version=5
strategy("Vezpa's Gold Strategy", overlay=true)
// ======================== MAIN STRATEGY ========================
// Input parameters for the main strategy
fast_length = input.int(21, title="Fast MA Length", minval=1)
slow_length = input.int(50, title="Slow MA Length", minval=1)
trend_filter_length = input.int(100, title="Trend Filter MA Length", minval=1)
// Calculate moving averages for the main strategy
fast_ma = ta.sma(close, fast_length)
slow_ma = ta.sma(close, slow_length)
trend_ma = ta.sma(close, trend_filter_length)
// Plot moving averages
plot(fast_ma, color=color.blue, title="21 MA")
plot(slow_ma, color=color.red, title="50 MA")
plot(trend_ma, color=color.orange, title="100 MA")
// Buy condition: 21 MA crosses above 50 MA AND both are above the 100 MA
if (ta.crossover(fast_ma, slow_ma) and fast_ma > trend_ma and slow_ma > trend_ma)
strategy.entry("Buy", strategy.long)
// Sell condition: 21 MA crosses below 50 MA AND both are below the 100 MA
if (ta.crossunder(fast_ma, slow_ma) and fast_ma < trend_ma and slow_ma < trend_ma)
strategy.close("Buy")
// Plot buy signals as green balloons
plotshape(series=ta.crossover(fast_ma, slow_ma) and fast_ma > trend_ma and slow_ma > trend_ma,
title="Buy Signal",
location=location.belowbar,
color=color.green,
style=shape.labelup,
text="BUY",
textcolor=color.white,
size=size.small,
transp=0)
// Plot sell signals as red balloons
plotshape(series=ta.crossunder(fast_ma, slow_ma) and fast_ma < trend_ma and slow_ma < trend_ma,
title="Sell Signal",
location=location.abovebar,
color=color.red,
style=shape.labeldown,
text="SELL",
textcolor=color.white,
size=size.small,
transp=0)