用extgbdata和extgbdataset维护起来不方便,特别是这些单值型全局变量比较多的时候
楼主应该是这个意思:
环境:后台执行代码,也可前台,应该不影响
需求:需要一个全局变量(单值型的)在每次执行的时候往后传递数据
现状:现在的解决方案是设置全局变量,利用Exdataset 以及Exdata来保存与获取
上述这种解决问题的方法很好,但有个缺点,就是当算法很多,全局变量很多时查询与维护不方便。
希望: 能用Variable2 直接声明一个变量,该变量的作用:
1,再每次单步执行的时候它的值能够往后传递。
2,在每次加载程序的时候初始化一次初始值,仅此一次。类似runmode、input函数等
3,该变量只在最后一个周期有效
也就是一个赋值和取值跟普通变量一样方便的单值型全局变量。
你的是后台程序化交易,请用Exdataset 以及Exdata来保存与获取全局变量.
variable:定义的全局变量是用于图表的----用于图表,只会初始化一次,不会出现楼主说的情况
不好意思,我点错了,编程了二楼的帖子了。
补充一下:所声明的全局变量,只局限在改公式使用。不像extgbdata是公共的、开放的
丰胸果然牛
谢谢。
请增加后台执行的全局变量。
后来想想,认为:
1,其实无需限定为最后一个周期才有效,如果需要,用户可以自行用islastbar控制
2,图标和后台均可以使用
也就是这样的变量:只局限在公式内部使用的、无需保存的、非公共的、非开放的、赋值和取值非常方便的单值型全局变量
有了这样的变量后,会有更多的功效,比如:无需重复计算的变量,都可以使用这个变量加快程序运行速度
举个例子:
//某日内交易模型,开盘价 + 昨日的波幅*0.4 +作为上界
//某日内交易模型,开盘价 - 昨日的波幅*0.4 +作为下界
//这里,昨日波幅的计算,其实无需重复计算,计算一次即可
//有了GlobalViriable,可以加快运算速度,如:
GlobalViriable:gl=drawnull;//初始值为无效值
cond:=day<>ref(day,1);
kpj:=valuewhen(cond,o);
yl:=kpj+gl*0.4;
zc:=kpj-gl*0.4;
……
……
if gl<>drawnull then exit;
nn:=barslast(cond)+1;
bofu:=valuewhen(cond,ref(hhv(h,nn)-llv(l,nn),1));
if date=currentdate then glv1:=bofu;//赋值后,bofu这个变量就不用重新计算了,而最新的信号都可以正确执行
LeeVolvo的理解非常正确,就是很多变量是重复计算的,比如开盘价的取值,前三十分钟的最高最低值,以及当日的交易次数与仓位信息。
这些计算都是重复的,而且是相当的计算量,尤其是过去N周期的最高最低值,如果能够避免计算,则计算量会非常节省。
谢谢!