本策略融合布林带指标和斐波那契回撤指标,实现多指标组合交易。属于典型的组合指标策略类型。策略通过布林带判断趋势方向,斐波那契回撤确定关键支持阻力位,从而产生交易信号。
该策略主要基于以下两个指标进行判断:
计算布林带中的上轨、中轨和下轨。价格突破下轨时为做多信号,突破上轨时为做空信号。
根据历史高点和低点计算出0%和100%两重要斐波那契回撤位。这两点可作为关键的支持和阻力位。
具体交易逻辑为:
做多信号:价格上穿布林带上轨,且处于0%斐波那契支持上方
做空信号:价格下穿布林带下轨,且处于100%斐波那契阻力下方
平仓以中轨为参考,中轨附近止盈或止损。
可以通过以下措施来降低风险:
该策略可以从以下几个方面进行优化:
寻找计算上下轨最佳的参数比例
测试计算回撤的不同周期参数
例如布林带突破时观察K线形态
考虑带有追踪功能的止损方式
不同品种参数不一定相同,需要调整
本策略通过组合布林带和斐波那契回撤指标,发挥各自的技术优势,提高了交易信号的质量。但也存在参数优化难度大,入场条件太严格等问题。我们可以通过优化参数设定、适当放宽入场条件、改进止损机制等方法来完善策略系统,在保留其技术优势的同时,争取更多的交易机会。同时,持续根据回测结果进行调整也是使策略更加稳健的关键。
/*backtest
start: 2023-09-13 00:00:00
end: 2023-09-20 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Bollinger Bands & Fibonacci Strategy", shorttitle="BB & Fib Strategy", overlay=true)
// Initialize position variables
var bool long_position = false
var bool short_position = false
// Bollinger Bands settings
length = input.int(20, title="Bollinger Bands Length")
src = input(close, title="Source")
mult = input.float(2.0, title="Standard Deviation Multiplier")
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper_band = basis + dev
lower_band = basis - dev
// Fibonacci retracement levels
fib_0 = input.float(0.0, title="Fibonacci 0% Level", minval=-100, maxval=100) / 100
fib_100 = input.float(1.0, title="Fibonacci 100% Level", minval=-100, maxval=100) / 100
// Plotting Bollinger Bands
plot(upper_band, color=color.red, title="Upper Bollinger Band")
plot(lower_band, color=color.green, title="Lower Bollinger Band")
// Calculate Fibonacci levels
fib_range = ta.highest(high, 50) - ta.lowest(low, 50)
fib_high = ta.highest(high, 50) - fib_range * fib_0
fib_low = ta.lowest(low, 50) + fib_range * fib_100
// Plot Fibonacci retracement levels
plot(fib_high, color=color.blue, title="Fibonacci High")
plot(fib_low, color=color.orange, title="Fibonacci Low")
// Entry conditions
long_condition = ta.crossover(close, upper_band) and low > fib_low
short_condition = ta.crossunder(close, lower_band) and high < fib_high
// Plot arrows on the chart
plotshape(series=long_condition, title="Long Entry", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=short_condition, title="Short Entry", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
// Entry and exit logic
if long_condition and not short_position
strategy.entry("Long", strategy.long)
long_position := true
short_position := false
if short_condition and not long_position
strategy.entry("Short", strategy.short)
short_position := true
long_position := false
// Exit conditions (you can customize these)
long_exit_condition = ta.crossunder(close, basis)
short_exit_condition = ta.crossover(close, basis)
if long_exit_condition
strategy.close("Long")
long_position := false
if short_exit_condition
strategy.close("Short")
short_position := false