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

关于全局变量的建议 [开拓者 TB]

  • 咨询内容: 随着模型的发展,全局变量500个不够用了,同时,多个策略,先每个策略留一段,但策略改进后,后面发现留少了,结果一个策略在多个段内,程序不易读,又容易错。造成这个情况是全部变量不能由用户自己定义。

    目前用GetGlobalVar和SetGlobalVar构建的全局变量,在每个bar时,可以看见其变化过程,明显这些全局变量是用序列变量来实现的,因此,500,占用了很大空间,估计也是你们不愿意继续扩大全局变量数量的原因。

    实际上,目前这种GetGlobalVar和SetGlobalVar的全部变量是需要的,但不要那么多,有10到20个够了,只用于调试程序,但程序中需要大量的由用户自己定义的全局变量,这种变量不需要记录中间变化过程,因此,只需要把这个变量值记录下来,在全局可以调用,每个变量只占用几个字节,因此不论定义多少,占用空间极少。
    不知道,tb内部是什么机制,开发一般意义上的全局变量那么难。

     

     来源:CXH99.COM

  • TB技术人员:

     

  • TB客服: 我也深受其害 做了个模型 tm 快气死了 用a函数加全局变量怎么搞都是重复发单

     

  • 网友回复: Params                          
    Vars            
           NumericSeries SX;
           NumericSeries DP;
           NumericSeries KP;      



                             //(CurrentTime-A_OrderTime)//平台时间-委托单时间                                       
    Begin                     
             
             
       SX=20150701;
    If(Date>=SX){setglobalvar(8,81);}   
             Else{setglobalvar(8,80);}      
                            
             if(Getglobalvar(8)==80&&A_BuyPosition==0&&A_SellPosition==0&&(CurrentTime-A_OrderTime)>0.000020)   //赋予初始值
            {setglobalvar(0,0);
         setglobalvar(1,10);
         setglobalvar(2,20);
         setglobalvar(3,30);
         setglobalvar(4,40);
         setglobalvar(5,50);}
             
             
             
    If(A_BuyPosition==0&&A_SellPosition==0&&Getglobalvar(0)==0)
       { A_SendOrder(Enum_Buy, Enum_Entry, 1 ,Q_AskPrice );  //多头开仓  
        A_SendOrder(Enum_Sell, Enum_Entry,1 ,Q_BidPrice);    //空头开仓  
             setglobalvar(0,1); }
    根本控制不住重复发单  初始值就不知道放在那里才能不被初始化

     

  • 网友回复:
  • 一堆 SetGlobalVar(0,GetGlobalVar(1)) , 原来可以简单的写出 A = B 的,这可读性差太远了,TB再不解决这问题,前途堪忧

 

有思路,想编写各种指标公式,交易模型,选股公式,还原公式的朋友

可联系技术人员 QQ: 262069696  点击在线交流或微信号:cxh99cxh99  进行 有偿收费 编写!

怎么收费,代编流程等详情请点击阅读!

(注:由于人数限制,QQ或微信请选择方便的一个联系我们就行,加好友时请简单备注下您的需求,否则无法通过。谢谢您!)


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

相关文章

    没有相关内容