该策略采用 RSI 指标判断市场潜在趋势方向,结合布林带指标识别关键支撑阻力区域,在趋势震荡行情中寻找低吸机会建仓做多,在超买区域止盈止损。
使用 RSI 指标判断市场潜在趋势方向。RSI 低于 40 视为超卖区域,市场有转多的可能;RSI 高于 50 视为超买区域,市场有转空的可能。
使用布林带指标识别关键支撑阻力区域。布林带中轨为价格的移动平均线,上下轨构成价格的标准差通道。价格接近下轨时为低吸机会区域。
当 RSI<40 且价格接近布林带下轨时,判断为低吸做多机会,采取建立多头仓位。
当 RSI>50 或止盈超过 50% 时,平掉多头仓位止盈止损。
使用 RSI 判定市场潜在趋势方向,避免逆势建仓。
结合布林带寻找低吸机会点,精确定位建仓时机。
采用趋势震荡思路,防止被套持。
灵活的止盈止损机制,保证盈利最大化。
布林带参数不恰当可能导致无法正确定位支撑区域。
顺势突破或假突破可能造成超买超卖判断错误。
止盈止损点设置不当可能造成过早离场或亏损扩大。
优化布林带参数,使支撑阻力区域识别更加准确。
结合 MACD、KDJ 等其他指标过滤虚假信号。
动态优化止盈止损算法,在保证盈利的同时最大限度减少亏损。
该策略通过 RSI 判定潜在趋势方向,辅以布林带识别支撑区域,实现低买高卖,是一个典型的趋势震荡策略。通过一定优化,可以成为一个可靠稳定盈利的量化策略。
/*backtest
start: 2023-12-28 00:00:00
end: 2024-01-04 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("price drop buy in", overlay=true, initial_capital=1000, max_bars_back=24)
// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2018, title = "From Year", minval = 2017)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2017)
// === FUNCTION EXAMPLE ===
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => true // create function "within window of time"
///////////// RSI
RSIlength = input(60,title="RSI Period Length")
RSIoverSold = 40
RSIoverBought = 50
price = close
vrsi = rsi(close, RSIlength)
smaLong = sma(close,80)
smaShort = sma(close,40)
///////////// Bollinger Bands
BBlength = input(20, minval=1,title="Bollinger Period Length")
BBmult = 2 // input(2.0, minval=0.001, maxval=50,title="Bollinger Bands Standard Deviation")
BBbasis = sma(price, BBlength)
BBdev = BBmult * stdev(price, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
longcondition = (price < BBlower and vrsi < RSIoverSold)
// vrsi < RSIoverSold
shortcondition = (RSIoverBought and strategy.openprofit > 50 ) or price > BBupper
if(longcondition)
strategy.entry('buy', strategy.long, when = window())
if(shortcondition)
strategy.entry('sell', strategy.short, when = window())