hxh989898 发表于 2016-6-2 09:56:30

for循环导致的死机问题

老师,您好.策略编译加进以下一段程序编译没问题,但加载后,机器不动了,甚至无法关闭超级图表
--------
if(A_GetOpenOrderCount()>0)  
{
        nCount1 = A_GetOpenOrderCount;
        if(nCount1>0)
        {
          for i=1 to nCount1
           {
           nEntryFlag = A_OpenOrderEntryOrExit(i);                    
           nBuyOrSell = A_OpenOrderBuyOrSell(i);
           OrderPrice = A_OpenOrderPrice(i);
           strContractNo =A_OpenOrderContractNo(i);

           If( nEntryFlag==Enum_Entry  )
               {
                if( nBuyOrSell==Enum_Buy  and Q_AskPrice>OrderPrice+MinMove*PriceScale)
                  {
                  A_DeleteOrder(strContractNo);
                  }

                if( nBuyOrSell==Enum_Sell and Q_BidPrice<OrderPrice-MinMove*PriceScale)
                  {
                  A_DeleteOrder(strContractNo);
                  }
               
                }

           If( nEntryFlag==Enum_Exit  )
                {
                if( nBuyOrSell==Enum_Buy  and Q_AskPrice>OrderPrice)
                  {
                  A_DeleteOrder(strContractNo);
                  }

                if( nBuyOrSell==Enum_Sell and Q_BidPrice<OrderPrice)
                  {
                  A_DeleteOrder(strContractNo);
                  }
                }

          }
               
      }
}





hxh989898 发表于 2016-6-2 10:27:49

我把for循环删除了,用Commentary语句检测ncount1,结果发现ncount1为10位数大,这是为什么?
if(A_GetOpenOrderCount()>0)  
{
        nCount1 = A_GetOpenOrderCount;
        
}

hxh989898 发表于 2016-6-2 11:39:34

查了一下论坛,http://bbs.tb18.net/thread-5006-1-1.html与我的问题是一样,期待老师的解答.

小米 发表于 2016-6-2 13:23:50

hxh989898 发表于 2016-6-2 10:27 static/image/common/back.gif
我把for循环删除了,用Commentary语句检测ncount1,结果发现ncount1为10位数大,这是为什么?
if(A_GetOpenOrde ...

如图所示的ncount1的值是一个无效值 。。
使用A函数时要确保帐户有关联在图表上(启动自动交易后),以及在最后K线上,方可取到有效值 。

hxh989898 发表于 2016-6-2 14:02:26

我最后改成这样,然后先打开图表,启动自动交易,插入公式应用,马上死机.
--------------------

if(A_GetOpenOrderCount()>0 and BarStatus==2)  
{
        nCount1 = A_GetOpenOrderCount;
        if(nCount1>0)
        {
          for i=1 to nCount1
           {
          
          }
               
      }
}
页: [1]
查看完整版本: for循环导致的死机问题