检查策略代码是否写错,模拟测试结果与策略说明有点差距
策略说明: 当某bar对应参数为14的CCI指标上穿1且收盘价对应cci值大于1时开仓做多单,固定开5手,当后续bar对应参数为14的CCI指标下穿 1时平仓。第一次开仓多单未平仓时,不开新单。系统要素: 1、参数为14的CCI指标入场条件: 1、某bar对应参数为14的CCI指标上穿1且收盘价对应cci值大于1 2、当前没有未平仓的多单出场条件: 1、后续bar对应参数为14的CCI指标下穿 1注 意: 此公式仅做多*/Params Numeric cciLength(14); // CCI指标参数 Numeric Lots(5); // 交易手数Vars Series<Numeric> typicalPrice(0); // 典型价格 Series<Numeric> smaTP(0); // 典型价格的简单移动平均线 Series<Numeric> atrVal(0); // 真实波动幅度均值 Series<Numeric> cciVal(0); // CCI指标值 Bool isOpened(False); // 标记是否已经开仓Events OnBar(ArrayRef<Integer> indexs) { // 计算典型价格 typicalPrice = (High + Low + Close) / 3; // 计算典型价格的简单移动平均线 smaTP = Average(typicalPrice, cciLength); // 计算真实波动幅度均值 atrVal = AvgTrueRange(cciLength); // 计算CCI指标 cciVal = (typicalPrice - smaTP) / (0.015 * atrVal); // 画线 PlotNumeric("CCI", cciVal); // 入场条件判断 If(!isOpened And MarketPosition != 1 And cciVal[1] <= 1 And cciVal > 1 And cciVal > 1) { // 开多单 Buy(Lots, Open); isOpened = True; } // 出场条件判断 If(MarketPosition == 1) { // 参数为14的CCI指标下穿 1时,平多单 If(cciVal[1] >= 1 And cciVal < 1) { Sell(0, Open); isOpened = False; } } }//------------------------------------------------------------------------// 编译版本 GS2014.10.25// 版权所有 TradeBlazer Software 2003-2025// 更改声明 TradeBlazer Software保留对TradeBlazer平// 台每一版本的TradeBlazer公式修改和重写的权利请大神帮我看下,这段策略代码是哪里出了问题,我要限制开仓,固定开仓,但是模拟测试总是会多次买入超量,Numeric Lots(5); // 交易手数,这句写的有问题么?