设为首页收藏本站

 找回密码
 注册
查看: 2215|回复: 4
打印 上一主题 下一主题

for循环导致的死机问题 [复制链接]

Rank: 2

精华
0
UID
227607
积分
91
帖子
58
主题
22
阅读权限
30
注册时间
2016-1-29
最后登录
2016-9-9
跳转到指定楼层
1#
发表于 2016-6-2 09:56:30 |只看该作者 |倒序浏览
老师,您好.策略编译加进以下一段程序编译没问题,但加载后,机器不动了,甚至无法关闭超级图表
--------
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);
                  }
                }

          }
               
      }
}





Rank: 2

精华
0
UID
227607
积分
91
帖子
58
主题
22
阅读权限
30
注册时间
2016-1-29
最后登录
2016-9-9
2#
发表于 2016-6-2 10:27:49 |只看该作者
我把for循环删除了,用Commentary语句检测ncount1,结果发现ncount1为10位数大,这是为什么?
if(A_GetOpenOrderCount()>0)  
{
        nCount1 = A_GetOpenOrderCount;
        
}
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

Rank: 2

精华
0
UID
227607
积分
91
帖子
58
主题
22
阅读权限
30
注册时间
2016-1-29
最后登录
2016-9-9
3#
发表于 2016-6-2 11:39:34 |只看该作者
查了一下论坛,http://bbs.tb18.net/thread-5006-1-1.html与我的问题是一样,期待老师的解答.

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
4#
发表于 2016-6-2 13:23:50 |只看该作者
hxh989898 发表于 2016-6-2 10:27
我把for循环删除了,用Commentary语句检测ncount1,结果发现ncount1为10位数大,这是为什么?
if(A_GetOpenOrde ...

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

使用道具 举报

Rank: 2

精华
0
UID
227607
积分
91
帖子
58
主题
22
阅读权限
30
注册时间
2016-1-29
最后登录
2016-9-9
5#
发表于 2016-6-2 14:02:26 |只看该作者
我最后改成这样,然后先打开图表,启动自动交易,插入公式应用,马上死机.
--------------------

if(A_GetOpenOrderCount()>0 and BarStatus==2)  
{
        nCount1 = A_GetOpenOrderCount;
        if(nCount1>0)
        {
          for i=1 to nCount1
           {
          
          }
               
      }
}

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-9 09:18

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部