这是一个结合布林带和超级趋势指标的智能交易策略。该策略主要通过布林带来识别市场波动区间,同时利用超级趋势指标来确认市场趋势方向,从而在高概率位置进行交易。策略设计适用于各种交易品种和时间周期,特别是在30分钟和2小时时间周期上表现较好。
策略的核心逻辑基于以下几个关键要素: 1. 使用20周期的布林带,带宽为2个标准差,构建出上轨、中轨、下轨以及两条中位线 2. 采用10周期ATR和3倍因子计算超级趋势指标 3. 入场信号: - 多头入场:当价格触及布林带下轨且超级趋势指标为多头方向时 - 空头入场:当价格触及布林带上轨且超级趋势指标为空头方向时 4. 出场信号: - 多头出场:当收盘价跌破超级趋势线且趋势转为空头时 - 空头出场:当收盘价突破超级趋势线且趋势转为多头时
这是一个结合技术分析经典指标的完整交易系统,通过布林带和超级趋势的协同作用,能够在趋势和波动中都有不错的表现。策略的可视化设计和参数灵活性使其具有很好的实用性。通过建议的优化方向,可以进一步提升策略的稳定性和盈利能力。建议在实盘使用前进行充分的回测和参数优化。
/*backtest
start: 2024-12-05 00:00:00
end: 2024-12-12 00:00:00
period: 5m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Bollinger Band & SuperTrend Strategy (Standard Chart)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// Bollinger Bands Settings
length_bb = input.int(20, title="Bollinger Band Length")
mult_bb = input.float(2.0, title="Bollinger Band Multiplier")
[bb_upper, bb_basis, bb_lower] = ta.bb(close, length_bb, mult_bb)
// Median Bands
bb_median_upper = (bb_upper + bb_basis) / 2
bb_median_lower = (bb_lower + bb_basis) / 2
// SuperTrend Settings
atr_length = input.int(10, title="ATR Length")
factor = input.float(3.0, title="SuperTrend Factor")
// SuperTrend Calculation based on standard chart OHLC data
[supertrend, direction] = ta.supertrend(factor, atr_length)
// Plotting Bollinger Bands
plot(bb_upper, color=color.red, title="Bollinger Upper Band")
plot(bb_median_upper, color=color.orange, title="Bollinger Median Upper Band")
plot(bb_basis, color=color.blue, title="Bollinger Basis")
plot(bb_median_lower, color=color.purple, title="Bollinger Median Lower Band")
plot(bb_lower, color=color.green, title="Bollinger Lower Band")
// Plotting SuperTrend
supertrend_color = direction > 0 ? color.green : color.red
plot(supertrend, color=supertrend_color, style=plot.style_line, title="SuperTrend Line")
// Customizable Signal Shape Inputs
buy_shape = input.string("shape_triangle_up", title="Buy Signal Shape", options=["shape_triangle_up", "shape_circle", "shape_cross", "shape_diamond", "shape_flag"])
sell_shape = input.string("shape_triangle_down", title="Sell Signal Shape", options=["shape_triangle_down", "shape_circle", "shape_cross", "shape_diamond", "shape_flag"])
// Entry Conditions
buy_condition = ta.crossover(low, bb_lower) and direction > 0
sell_condition = ta.crossunder(high, bb_upper) and direction < 0
// Exit Conditions
exit_buy_condition = ta.crossunder(close, supertrend) and direction < 0
exit_sell_condition = ta.crossover(close, supertrend) and direction > 0
// Strategy Logic
if buy_condition
strategy.entry("Buy", strategy.long)
if sell_condition
strategy.entry("Sell", strategy.short)
if exit_buy_condition
strategy.close("Buy")
if exit_sell_condition
strategy.close("Sell")
// Plot Buy Signal Shape
plotshape(series=buy_condition, title="Buy Signal", location=location.belowbar, color=color.green, style=buy_shape, text="BUY", textcolor=color.white)
// Plot Sell Signal Shape
plotshape(series=sell_condition, title="Sell Signal", location=location.abovebar, color=color.red, style=sell_shape, text="SELL", textcolor=color.white)