该策略利用布林带确定价格通道,并结合斐波那契回撤比判断支持阻力位,实现自动化交易。策略识别布林带突破并追踪回撤点,在高概率回调区域进行买入或卖出操纵。
计算布林带中的中轨、上轨和下轨
利用SMA和ATR计算中轨线、上轨线和下轨线
布林带通道随市场波动而扩展和收缩
计算斐波那契回撤比对应的价格位
取ATR与斐波那契数列比例的乘积作为回撤比例
根据中轨计算出多个斐波那契回撤位
监控价格突破布林带上下轨
价格突破上轨时考虑做多
价格突破下轨时考虑做空
在斐波那契回撤位附近设置入场和止损止盈
价格回调至斐波那契回撤区时入场
在回撤区另一边设定止损止盈
布林带能清晰识别市场波动范围和趋势
斐波那契回撤比掌握关键支持阻力区域
结合指标信号可实现自动交易
回调入场增加成功率,避免追高杀跌
可通过调整参数适应不同周期及品种
布林带突破可能是假突破,产生错误信号
无法准确预测价格何时会回调至斐波那契位
停损点选取不当可能扩大亏损
回调幅度过大过小都会影响策略效果
参数不合理或市场持续方向性时策略失败
优化布林带判定逻辑,更多考虑量能指标,动态调整回撤区等
优化布林带参数以提高对趋势和支撑阻力的判断
增加量能指标判断突破信号有效性
利用机器学习辅助判断回调概率
结合更多技术指标验证交易信号
根据品种特点和交易时段选定合理参数
及时调整回撤区强度适应变化的波动性
该策略整合布林带和斐波那契回撤比指标的优势,识别趋势方向并在高概率回调点入场。通过参数优化、增加验证指标、动态调整回撤区等方式可降低风险提升效果。策略空间仍可扩展,如加入量能指标、机器学习等提高效果,在持续优化中趋于成熟。
/*backtest
start: 2023-08-27 00:00:00
end: 2023-09-26 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(shorttitle="BBands Fibo", title="Bollinger Bands Fibonacci Ratios", overlay=true)
length = input(20, minval=1, type=input.integer, title="Length")
src = input(close, title="Source")
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
fibo1 = input(defval=1.618, title="Fibonacci Ratio 1")
fibo2 = input(defval=2.618, title="Fibonacci Ratio 2")
fibo3 = input(defval=4.236, title="Fibonacci Ratio 3")
fiboBuyReverse = input(false, title = "Use Reverse Buy?")
fiboBuy = input(options = ["Fibo 1", "Fibo 2", "Fibo 3"],defval = "Fibo 1", title="Fibonacci Buy")
fiboSellReverse = input(false, title = "Use Reverse Sell?")
fiboSell = input(options = ["Fibo 1", "Fibo 2", "Fibo 3"],defval = "Fibo 1", title="Fibonacci Sell")
sma = sma(src, length)
atr = atr(length)
ratio1 = atr * fibo1
ratio2 = atr * fibo2
ratio3 = atr * fibo3
upper3 = sma + ratio3
upper2 = sma + ratio2
upper1 = sma + ratio1
lower1 = sma - ratio1
lower2 = sma - ratio2
lower3 = sma - ratio3
plot(sma, style=0, title="Basis", color=color.orange, linewidth=2, offset = offset)
upp3 = plot(upper3, transp=90, title="Upper 3", color=color.teal, offset = offset)
upp2 = plot(upper2, transp=60, title="Upper 2", color=color.teal, offset = offset)
upp1 = plot(upper1, transp=30, title="Upper 1", color=color.teal, offset = offset)
low1 = plot(lower1, transp=30, title="Lower 1", color=color.teal, offset = offset)
low2 = plot(lower2, transp=60, title="Lower 2", color=color.teal, offset = offset)
low3 = plot(lower3, transp=90, title="Lower 3", color=color.teal, offset = offset)
fill(upp3, low3, title = "Background", color=color.new(color.teal, 95))
targetBuy = fiboBuy == "Fibo 1" ? upper1 : fiboBuy == "Fibo 2" ? upper2 : upper3
targetBuy := fiboBuyReverse == false ? targetBuy : fiboBuy == "Fibo 1" ? lower1 : fiboBuy == "Fibo 2" ? lower2 : lower3
buy = low < targetBuy and high > targetBuy
targetSell = fiboSell == "Fibo 1" ? lower1 : fiboSell == "Fibo 2" ? lower2 : lower3
targetSell := fiboSellReverse == false ? targetSell : fiboSell == "Fibo 1" ? upper1 : fiboSell == "Fibo 2" ? upper2 : upper3
sell = low < targetSell and high > targetSell
strategy.entry("Buy", true, when = buy)
strategy.entry("Sell", false, when = sell)