代码中止盈止损不起作用

代码如下,代码回测后,发现止盈止损没起作用,修改止盈止损的数值后,回测报告的结果没有任何变化,麻烦看看问题出在哪里:

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;        // 交易时段结束时间

Events

OnBar(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);  // 平仓

       }

   }

}

止盈止损代码编写
关于止损止盈的写法
根据账户权益止盈止损
代码写了固定止损和固定止盈,当盘中出现大K线时,此K线的最高价和最低价同时满足止损和止盈,得怎么办?
多空移动止盈止损线源码
账户手工开仓后,怎样利用开拓者平台对该手工仓单进行止盈止损(对于止盈最好能实现浮动止盈)
止损代码请教
增加止盈止损后,原位置不开仓了
怎么设置默认选择止盈止损。
跟踪止损

改变止盈止损代码后测试报告没有任何变化,那就说明止盈止损的条件分支没有执行过,也就是说,止盈止损的代码条件没有满足。

基于此,你应该写调试代码,把止盈止损的条件状态输出看一下,为什么不满足,是哪个数值不对,以此来分析代码哪里出问题