
该策略结合了布林带和移动平均线,利用布林带上下轨反转点和移动平均线方向作为入场和出场信号。具体来说,当价格从下向上突破布林带下轨且高于移动平均线时,做多;当价格从上向下突破布林带上轨且低于移动平均线时,平仓。
该策略主要基于布林带和移动平均线两个指标。
布林带包含上带、下带和中轨。中轨是n天的简单移动平均线,上下带分别是中轨上下k倍标准差。当价格接近上下带时表示过度买入或卖出,这时可能会产生反转。
移动平均线反映了价格的平均趋势方向。当短期移动平均线上穿长期移动平均线时,表示价格走势由下向上,可以考虑做多;而短期移动平均线下穿长期移动平均线时,表示价格走势由上向下,可以考虑做空。
该策略综合考虑了布林带反转信号和移动平均线的趋势判断。价格突破布林带下轨时产生买入信号,而且要求移动平均线上升以确保大趋势为上涨;价格突破布林带上轨时产生卖出信号,而且要求移动平均线下降以确保大趋势为下跌。这样就实现了在反转的同时考量大的趋势方向。
具体操作规则如下:
该策略主要优势有:
该策略主要风险有:
该策略主要可优化的方向:
该策略综合考虑布林带反转信号和移动平均线趋势判断,在保证反转效果的同时控制了局部震荡对总体趋势判断的影响。策略信号产生及原理简单清晰,容易理解实现,且可以通过多种方式进行优化提高效果,是一种适合量化交易的有效策略。
/*backtest
start: 2023-11-05 00:00:00
end: 2023-12-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Bollinger Bands Rejection with MA Trend Filter", overlay=true)
// Bollinger Bands Settings
length = input(20, title="Bollinger Bands Length")
src = input(close, title="Source")
mult = input(2.0, title="Standard Deviation")
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
// Calculate Bollinger Bands
upper_band = basis + dev
lower_band = basis - dev
// MA Settings
ma_length = input(50, title="MA Length")
ma_src = input(close, title="MA Source")
ma = ta.sma(ma_src, ma_length)
// Buy Condition
buy_condition = ta.crossover(close, lower_band) and ta.crossover(close, ma)
// Sell Condition
sell_condition = ta.crossunder(close, upper_band) and ta.crossunder(close, ma)
if buy_condition
strategy.entry("Buy", strategy.long)
if sell_condition
strategy.close("Buy")
plot(upper_band, color=color.red, title="Upper Bollinger Band")
plot(lower_band, color=color.green, title="Lower Bollinger Band")
plot(ma, color=color.blue, title="50-period MA")