概述: 该策略通过连续N根K线收盘价的方向判断趋势方向,当连续N根K线收盘价符合条件时产生交易信号。其中N的大小由confirmBars输入参数设定。该策略主要利用连续N根K线收盘价的方向判定趋势的力度,N越大表示需要更多K线确认趋势,可过滤假突破情况,但同时也可能错过趋势初期。
原理: 策略通过跟踪最后一根K线与前一根K线的收盘价大小关系,判断价格上涨或下跌的力度。具体来说,它定义了两个变量bcount和scount,分别记录连续收盘价上涨和连续收盘价下跌的根数。
当bcount达到confirmBars设置的数值时,表示连续confirmBars根K线收盘价上涨,产生买入信号。当scount达到confirmBars设置的数值时,表示连续confirmBars根K线收盘价下跌,产生卖出信号。
这样通过判断连续若干根K线的收盘价方向,可有效过滤短期市场波动的噪音,只在较大力度的趋势下产生交易信号。
优势分析: 1. 可有效过滤噪音,确认趋势 该策略要求连续N根K线收盘价符合条件时才产生交易信号,可过滤正常市场波动对交易的影响,确保只在较强势的趋势下打开仓位。
风险分析: 1. 可能错过趋势初期机会 策略要求连续多根K线收盘价符合才产生信号,因此常常会错过趋势的初期机会,无法及时追踪趋势。
优化方向: 1. 结合其他指标过滤假突破 可结合其他技术指标,如布林带、RSI等对买卖信号进行二次过滤,减少被假突破的可能。
总结: 该策略通过判断连续若干根K线的收盘价方向,达到过滤震荡、确认趋势的效果。它可以有效地减少因短期市场波动所引发的错误交易,只在趋势明显时产生交易信号。通过调整confirmBars的参数大小,用户可以自行平衡过滤效果与捕捉趋势机会之间的关系。但该策略容易在趋势初期就被止损出场,无法持续跟踪趋势。建议结合其他指标进行优化,或尝试动态调整参数以追求更佳回报。
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Confirm Bars Strategy [TS Trader]", overlay=true)
confirmBars = input(1)
// === INPUT BACKTEST RANGE ===
fromYear = input.int(2019, title="Backtest Start Year")
fromMonth = input.int(1, title="Backtest Start Month", minval=1, maxval=12)
fromDay = input.int(1, title="Backtest Start Day", minval=1, maxval=31)
toYear = input.int(2023, title="Backtest End Year")
toMonth = input.int(12, title="Backtest End Month", minval=1, maxval=12)
toDay = input.int(31, title="Backtest End Day", minval=1, maxval=31)
startTimestamp = timestamp(fromYear, fromMonth, fromDay, 00, 00)
endTimestamp = timestamp(toYear, toMonth, toDay, 23, 59)
inBacktestRange = true
// === STRATEGY LOGIC ===
bcount = 0
bcount := close[1] < close ? nz(bcount[1]) + 1 : 0
if (bcount == confirmBars and inBacktestRange)
strategy.entry("Buy", strategy.long, comment="Long")
scount = 0
scount := close[1] > close ? nz(scount[1]) + 1 : 0
if (scount == confirmBars and inBacktestRange)
strategy.entry("Sell", strategy.short, comment="Short")