求高手帮助解决程序化策略的信号闪烁以及重复开仓问题
程序化策略使用中,存在以下3个问题:1、经常出现信号闪烁的警告提示。2、系统设置的是1手交易,但实际会多次重复开仓买入。3、回测数据和实盘中的开平仓不一致,Params Numeric FastLength(12); // MACD快线周期 Numeric SlowLength(26); // MACD慢线周期 Numeric MACDLength(9); // MACD信号线周期 Numeric BIASPeriod(12); // BIAS周期 Numeric Lots(1); // 每次交易的手数Vars Series<Numeric> FastEMA; // 快线EMA Series<Numeric> SlowEMA; // 慢线EMA Series<Numeric> MACDValue; // MACD值 Series<Numeric> MAValue; // 移动平均值 Series<Numeric> BIASValue; // BIAS值 Bool BuyCondition(False); // 买入条件 Bool SellCondition(False); // 卖出条件 Bool ExitBuyCondition(False); // 买入后平仓条件 Bool ExitSellCondition(False); // 卖出后平仓条件Events onBar(ArrayRef<Integer> indexs) { // 计算MACD FastEMA = XAverage(Close, FastLength); SlowEMA = XAverage(Close, SlowLength); MACDValue = FastEMA - SlowEMA; // 计算BIAS MAValue = Average(Close, BIASPeriod); BIASValue = (Close - MAValue) / MAValue * 100; // 开仓买入条件:K线收盘时 MACD > 0 且 BIAS > 0 if (MACDValue > 0 && BIASValue > 0) { BuyCondition = True; } // 开仓卖出条件:K线收盘时 MACD < 0 且 BIAS < 0 if (MACDValue < 0 && BIASValue < 0) { SellCondition = True; } // 平仓买入条件:K线收盘时 MACD < 0 或 BIAS < 0 if (MarketPosition == 1 && (MACDValue < 0 || BIASValue < 0)) { ExitBuyCondition = True; } // 平仓卖出条件:K线收盘时 MACD > 0 或 BIAS > 0 if (MarketPosition == -1 && (MACDValue > 0 || BIASValue > 0)) { ExitSellCondition = True; } // 执行买入操作(仅在无持仓时执行) if (BuyCondition && MarketPosition == 0) { Buy(Lots, Open); BuyCondition = False; // 重置买入条件 } // 执行卖出操作(仅在无持仓时执行) if (SellCondition && MarketPosition == 0) { SellShort(Lots, Open); SellCondition = False; // 重置卖出条件 } // 执行买入后平仓操作 if (ExitBuyCondition && MarketPosition == 1) { Sell(Lots, Open); ExitBuyCondition = False; // 重置平仓条件 } // 执行卖出后平仓操作 if (ExitSellCondition && MarketPosition == -1) { BuyToCover(Lots, Open); ExitSellCondition = False; // 重置平仓条件 } }