为什么没有开仓记录,是哪里出错了吗

Params Numeric FastMA(12); //MACD短周期值 Numeric SlowMA(26); //MACD长周期值 Numeric AvgMA(9); //MACD慢线周期值 Numeric MAperiod(11); //11日均线周期值 Vars Series<Numeric> MACDLine(0); Series<Numeric> SignalLine(0); Series<Numeric> MAValue(0); Bool GoldenCross(false); // 记录是否金叉 Bool DeathCross(false); // 记录是否死叉 Numeric BuyPrice(0); // 买入价格 Numeric SellPrice(0); // 平仓价格 Numeric SellShortPrice(0); // 卖空价格 Numeric BuyToCoverPrice(0); // 空单平仓价格 Events OnBar(ArrayRef<Integer> indexs) { // 计算MACD快线 MACDLine = XAverage(Close, FastMA) - XAverage(Close, SlowMA); // 计算MACD慢线 SignalLine = XAverage(MACDLine, AvgMA); // 计算11日均线 MAValue = AverageFC(Close, MAperiod); // 判断是否金叉 GoldenCross = CrossOver(MACDLine[1], SignalLine[1]); // 判断是否死叉 DeathCross = CrossUnder(MACDLine[1], SignalLine[1]); // 在开盘时确定价格和交易条件 if (BarStatus == 2) { // 买入逻辑,增加价格在11均线上方的条件,以开盘价作为买入价格 if (GoldenCross && MarketPosition == 0 && Close > MAValue[1]) { BuyPrice = Open; Buy(0, BuyPrice); } // 多单平仓逻辑,增加不是根bar的条件,以开盘价作为平仓价格 if (MarketPosition == 1 && Low < MAValue[1] && CurrentBar > 0) { SellPrice = Open; Sell(0, SellPrice); } // 卖空逻辑,增加价格在11均线下方的条件,以开盘价作为卖空价格 if (DeathCross && MarketPosition == 0 && Close < MAValue[1]) { SellShortPrice = Open; SellShort(0, SellShortPrice); } // 空单平仓逻辑,增加不是根bar的条件,以开盘价作为空单平仓价格 if (MarketPosition == -1 && High > MAValue[1] && CurrentBar > 0) { BuyToCoverPrice = Open; BuyToCover(0, BuyToCoverPrice); } } Commentary("MAValue[1]" + Text(MAValue[1])); PlotNumeric("MAValue[1]",MAValue[1]); }

BarStatus == 2 的意思是最新一根bar意思是你这段交易代码只在最新一根bar运行不要这个if条件就有信号了

回复:我想开仓和平仓在开盘的时候就以开盘价确定,这该怎么写啊,如果以开盘价的时候就计算好平仓和开仓价格就不会闪烁了吧?

回复:+1

回复:你的思路是有问题信号价格是由触发信号时的盘口价格决定如果你想开平价格以开盘价确定,那你应该保证你的信号都是在k线开盘的时候就能确认。要照着这个思路去写