设为首页收藏本站

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

关于全局变量的建议 [复制链接]

Rank: 5Rank: 5

精华
0
UID
18246
积分
678
帖子
196
主题
136
阅读权限
60
注册时间
2010-10-24
最后登录
2019-3-30
跳转到指定楼层
1#
发表于 2015-5-29 23:12:26 |只看该作者 |倒序浏览
随着模型的发展,全局变量500个不够用了,同时,多个策略,先每个策略留一段,但策略改进后,后面发现留少了,结果一个策略在多个段内,程序不易读,又容易错。造成这个情况是全部变量不能由用户自己定义。

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

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

Rank: 2

精华
0
UID
210252
积分
68
帖子
45
主题
11
阅读权限
30
注册时间
2015-6-1
最后登录
2015-8-20
2#
发表于 2015-6-23 17:41:39 |只看该作者

使用道具 举报

Rank: 2

精华
0
UID
210252
积分
68
帖子
45
主题
11
阅读权限
30
注册时间
2015-6-1
最后登录
2015-8-20
3#
发表于 2015-6-23 17:42:49 |只看该作者
我也深受其害 做了个模型 tm 快气死了 用a函数加全局变量怎么搞都是重复发单

使用道具 举报

Rank: 2

精华
0
UID
210252
积分
68
帖子
45
主题
11
阅读权限
30
注册时间
2015-6-1
最后登录
2015-8-20
4#
发表于 2015-6-23 17:52:09 |只看该作者
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); }
根本控制不住重复发单  初始值就不知道放在那里才能不被初始化

使用道具 举报

Rank: 1

精华
0
UID
229893
积分
31
帖子
15
主题
7
阅读权限
10
注册时间
2016-3-13
最后登录
2017-2-18
5#
发表于 2016-7-2 21:42:54 |只看该作者
一堆 SetGlobalVar(0,GetGlobalVar(1)) , 原来可以简单的写出 A = B 的,这可读性差太远了,TB再不解决这问题,前途堪忧

使用道具 举报

Rank: 1

精华
0
UID
248627
积分
1
帖子
1
主题
0
阅读权限
10
注册时间
2017-3-14
最后登录
2017-5-18
6#
发表于 2017-5-13 18:46:50 |只看该作者
强烈建议全局变量增加到 5000个。

使用道具 举报

Rank: 4

精华
0
UID
1124332
积分
421
帖子
52
主题
29
阅读权限
50
注册时间
2021-5-28
最后登录
2021-7-16
7#
发表于 2021-5-30 09:28:20 |只看该作者
tbQ的全局变量好象没有限制为500个了,可以无限多了!哈哈哈

使用道具 举报

Rank: 4

精华
0
UID
1124332
积分
421
帖子
52
主题
29
阅读权限
50
注册时间
2021-5-28
最后登录
2021-7-16
8#
发表于 2021-5-30 09:36:45 |只看该作者
我刚才试了,tbQ的全局变量,设10万个都没问题了!哈哈哈

使用道具 举报

Rank: 4

精华
0
UID
1124332
积分
421
帖子
52
主题
29
阅读权限
50
注册时间
2021-5-28
最后登录
2021-7-16
9#
发表于 2021-5-30 15:56:28 |只看该作者
全局变量的作用
1_说变就变,立马变的量;
2_当锁用;
3_名称可以用string来组合;
4_用来记录只运行一次的代码块内的数值,用于代码块外使用;

使用道具 举报

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

bottom

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

GMT+8, 2024-5-9 07:01

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部