本策略融合布林带指标和Stoch RSI指标,实现多指标组合交易。属于典型的组合指标策略类型。策略通过布林带判断趋势方向,Stoch RSI进行入场时机优化,实现交易信号的产生。
该策略主要基于以下两个指标进行判断:
计算布林带中的上轨、中轨和下轨。当价格从下轨向上突破时产生买入信号。
计算Stoch RSI指标,当其K线上穿D线时产生买入信号。
具体交易逻辑为:同时满足布林带上轨突破和Stoch RSI指标金叉时,进行买入开仓。
平仓条件为止盈或止损:当价格重新触碰布林带上轨或中轨时,进行止盈平仓;当价格重新跌破布林带下轨时,进行止损平仓。
可以通过以下措施来降低风险:
该策略可以从以下几个方面进行优化:
调整上下轨计算比例,寻找最佳参数
寻找最匹配的K值和D值
避免只依靠单一指标造成假信号
根据价格波动 trailing stop 止损
不同品种参数不一定相同,需要分别优化
本策略通过布林带判断趋势方向,Stoch RSI进行入场时机优化,实现了多指标组合带来的交易优势。但也存在参数优化难度大,信号准确性有待提高等问题。我们可以通过严格的回测来优化参数,加入确认指标进行过滤,并不断根据回测结果修正策略规则,从而在提高信号准确性的同时,保持组合指标组合判断的优势性。只有不断学习和优化,才能使策略更稳定和可靠。
/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 2d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(title = "BB+RSI v2", overlay = true)
price=close
////////// /////// BB /////////////////////////
bblength = input(50)
bbupmult =input(2,step=0.1,title="Multiplier for BB Upper Band")
bblowmult = input(2,step=0.1,title="Multiplier for BB Lower Band")
basis = sma(close,bblength)
devup = bbupmult * stdev(close, bblength)
devlow = bblowmult * stdev(close, bblength)
upper = basis + devup
lower = basis - devlow
plot(basis, color=red)
p1 = plot(upper, color=blue)
p2 = plot(lower, color=blue)
fill(p1, p2)
bbbuy= crossover(price,lower)
bbsell = crossunder(price,upper) or price>upper or crossunder(price,basis)
//////////////////// BB //////////////////////
//////////////////////// S RSI /////////////////////
lengthrsi = input(6)
overSold = input( 20 )
overBought = input( 70 )
vrsi = rsi(price, lengthrsi)
smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
src = input(close, title="RSI Source")
rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
SRSIbuy=crossover(k,d)
////////////////////// S RSI ///////////////////////
// Conditions
longcond = bbbuy and SRSIbuy
closelong = bbsell
monthfrom =input(6)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)
if ( longcond )
strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND", comment="BUY")
else
strategy.cancel(id="BUY")
if ( closelong )
strategy.close("BUY")