代码中止盈止损不起作用

代码如下,代码回测后,发现止盈止损没起作用,修改止盈止损的数值后,回测报告的结果没有任何变化,麻烦看看问题出在哪里:Params Numeric OpenThreshold(0.003); // 开盘价突破阈值(0.3%) Numeric StopLossPct(0.01); // 止损比例(1%) Numeric TakeProfitPct(0.04); // 止盈比例(4%) Numeric CloseBeforeMinutes(5); // 收盘前清仓时间(分钟)Vars Numeric PreClose; // 上一交易日收盘价 Numeric BuyPrice; // 买入开仓价格 Numeric SellPrice; // 卖出开仓价格 Bool IsOpenConditionMet; // 开仓条件是否满足 Numeric SessionEndTime; // 交易时段结束时间EventsOnBar(ArrayRef<Integer> indexs){ // 初始化上一交易日收盘价 if (BarStatus == 0) // 每根K线的第一次计算 { PreClose = Close[1]; // 上一交易日收盘价 } // 开仓条件 if (MarketPosition == 0) // 无持仓 { if (Open < PreClose * (1 - OpenThreshold)) // 开盘价低于上一交易日收盘价0.3%以上,卖空 { SellShort(1, Open); // 卖空开仓 SellPrice = Open; // 记录卖空价格 IsOpenConditionMet = True; // 开仓条件已满足 } else if (Open > PreClose * (1 + OpenThreshold)) // 开盘价高于上一交易日收盘价0.3%以上,买入 { Buy(1, Open); // 买入开仓 BuyPrice = Open; // 记录买入价格 IsOpenConditionMet = True; // 开仓条件已满足 } } // 止盈止损 if (MarketPosition == 1) // 持有多头 { if (Close <= BuyPrice * (1 - StopLossPct)) // 亏损0.5%,止损 { Sell(1, Close); // 平仓 } else if (Close >= BuyPrice * (1 + TakeProfitPct)) // 盈利2%,止盈 { Sell(1, Close); // 平仓 } } else if (MarketPosition == -1) // 持有空头 { if (Close >= SellPrice * (1 + StopLossPct)) // 亏损0.5%,止损 { BuyToCover(1, Close); // 平仓 } else if (Close <= SellPrice * (1 - TakeProfitPct)) // 盈利2%,止盈 { BuyToCover(1, Close); // 平仓 } } // 临近收盘前5分钟清仓 if (Time >= (SessionEndTime - CloseBeforeMinutes * 60)) // 收盘前5分钟 { if (MarketPosition == 1) // 持有多头 { Sell(1, Close); // 平仓 } else if (MarketPosition == -1) // 持有空头 { BuyToCover(1, Close); // 平仓 } }}

改变止盈止损代码后测试报告没有任何变化,那就说明止盈止损的条件分支没有执行过,也就是说,止盈止损的代码条件没有满足。基于此,你应该写调试代码,把止盈止损的条件状态输出看一下,为什么不满足,是哪个数值不对,以此来分析代码哪里出问题