这个策略综合运用了移动平均线、CCI指标、PSAR指标和ADX动向指数等多个指标,实现了一个比较典型的突破策略。当市场出现明确的多头信号时做多,出现明确空头信号时做空,非常适合中短线操作。
该策略的入场条件包含以下几个方面: 1. 移动平均线方面:要求5日线上穿10日线,10日线上穿20日线,20日线上穿40日线,这样能有效过滤掉多数假突破。 2. CCI指标方面:要求CCI指标小于-100时为多头入场signal,大于100时为空头入场signal。 3. PSAR点状方向指标方面:要求PSAR点状指标的方向与价格区分趋势的方向一致。 4. ADX动态指标方面:要求ADX大于20,表示目前处于趋势市场,适合使用突破系统。
同时,出场条件也考虑了多个指标: 1. 移动平均线方面:与入场条件相反,如5日线下穿10日线则为头寸平仓信号。 2. CCI指标、PSAR点状指标也与入场条件相反,如CCI指标大于100则为多单平仓。
这样,策略的入场比较严格,出场比较宽松,这样可以获得比较高的获利率。
这是一个比较典型的多指标组合突破策略,具有以下几个优势:
该策略也存在以下风险:
对策:
1. 可适当放宽入场条件,付出更多成本换取更低风险。
2. 增加更长线段的指标判断,如60日乃至更长的移动平均线。
3. 动态优化CCI等参数。
4. 结合更多指标判断走势,如布林线。
该策略还有以下几个优化的方向:
该策略总的来说是一个典型且经典的多指标突破策略。它优点是入场条件严谨,出场条件宽松,而且包含了趋势判断模块。但是也存在一定的风险,需要不断优化,使其能够适应更加复杂的市场环境。模型组合和参数优化都是它的发展方向。
/*backtest
start: 2023-11-14 00:00:00
end: 2023-11-21 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Bukan Kaleng Kaleng Li", shorttitle="BKKL", overlay=true)
psarDot = sar(0.01, 0.01, 0.2)
up = change(high)
down = -change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
trur = rma(tr, 14)
plus = fixnan(100 * rma(plusDM, 14) / trur)
minus = fixnan(100 * rma(minusDM, 14) / trur)
sum = plus + minus
adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), 14)
longConditionSMA4020 = sma(close, 40) > sma(close, 20)
longConditionSMA2010 = sma(close, 20) > sma(close, 10)
longConditionSMA105 = sma(close, 10) > sma(close, 5)
longConditionSMA = longConditionSMA4020 and longConditionSMA2010 and longConditionSMA105
longConditionCCI = cci(close, 20) < -100
longConditionPSAR = psarDot > close
longConditionDMI = plus < 10
adxCondition = adx > 20
longCondition = longConditionSMA and longConditionCCI and longConditionPSAR and longConditionDMI
if (longCondition and adxCondition)
strategy.order("Long Signal", true)
shortConditionSMA4020 = sma(close, 40) < sma(close, 20)
shortConditionSMA2010 = sma(close, 20) < sma(close, 10)
shortConditionSMA105 = sma(close, 10) < sma(close, 5)
shortConditionSMA = shortConditionSMA4020 and shortConditionSMA2010 and shortConditionSMA105
shortConditionCCI = cci(close, 20) > 100
shortConditionPSAR = psarDot < close
shortConditionDMI = minus < 10
shortCondition = shortConditionSMA and shortConditionCCI and shortConditionPSAR and shortConditionDMI
if (shortCondition and adxCondition)
strategy.order("Short Signal", false)