您现在的位置:程序化交易>> 期货公式>> 交易开拓者(TB)>> 开拓者知识>>正文内容

开拓者while循环时,还能接收行情吗 [开拓者 TB]

  • 咨询内容: 平仓反手的交易,在平仓发出委托至成交之间,需要一个延时等待成交的循环语句,以保证有足够的资金开新仓,问题是,在循环期间,是否还能接收新的行情信息。我的理解是:在循环期间,相当于处理一个tick的程序还没有运行完,按TB的运行机制,似乎不会处理新的tick信息。


    Params
    Vars
            Numeric        startime;
    Begin
        If (Close < Open)
        {
            sell(1,Close);
        }
        if(买条件)
        {
           startime = CurrentTime;
            while(A_buyposition != 0)
            {
                  if(Low == Q_LowerLimit)
                       Continue;//跌停板,难成交,继续等待       问题:如果跌停板已打开,是否能收到新的行情信息呢?收不到并且发出的平仓委托本身有问题,这里就变成死循环了。
                  if(CurrentTime - startime > 0.000005)
                       break;     //不是跌停板,而且超过5秒,还没成交,不等了。
             }
            Buy(1,close);
        }
    End

     

  • TB技术人员: 我觉得也不会,而且tb应该是单线程执行的,没测试过,不过你可以用系统调试一下看看,里面加一个FileAppend然后监控一下是那个线程在做这个fileappend(通过系统监控),什么时候在输出什么log就可以知道了啊。

     

  • TB客服: startime = CurrentTime 这一句永远都在 if(CurrentTime - startime > 0.000005)这个之前执行,逻辑明显有问题。。。

     

  • 网友回复:   回2楼:我没开模拟,听说模拟服务器不好,直接开的实盘,测试起来不是很方便。

      回3楼:在执行while循环时,如果没有中断,应该不会去执行while之前的语句的,也就是说,如果while条件一直存在(死循环),那么,CurrentTime(电脑时间)会一直在走,而startime却停留在初始赋值的数值。

     

  • 网友回复: 本帖最后由 niubaisui 于 2012-1-12 19:23 编辑

    我现在最担心的是,在执行while循环时,帐户持仓发生了变化(A_buyposition 由大于0变成了1),却没能收到,就真成了死循环了。
    另外,我需要这样子延时,而不是采用tick延时,是因为每个tick都会把程序执行一遍,导致其它变量改变不好写。

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 262069696  点击在线交流进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容