以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  GLOBALVARIABLE不能用在“仅刷最后一根K线”  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=51041)

--  作者:klc
--  发布时间:2013/4/15 11:04:41
--  GLOBALVARIABLE不能用在“仅刷最后一根K线”

我就是想要一个全局变量,仅需要用在公式内,所以没想用EXTGBSTRINGSET,似乎EXTGBSTRINGSET这样的效率也稍微低一点。

 

我就是要提高效率,所以同时用了“仅刷最后一根K线”,但勾选之后,GLOBALVARIABLE声明的变量就和普通的变量一样了。

 

为什么二者不能兼得?函数里面也没有任何这方面的说明?调试了好久才发现是勾选了“仅刷最后一根K线”的原因。我想提高效率,想既勾选“仅刷最后一根K线”,同时又能用全局变量。

 

我用全局变量的原因也是为了提高效率,因为保存的值计算过程比较复杂,只有在某个指标变化的时候才重新计算一次,没必要每tick都计算


--  作者:jinzhe
--  发布时间:2013/4/15 11:19:38
--  
函数说明上都写着啊
--  作者:klc
--  发布时间:2013/4/15 11:33:19
--  

申明并初始化变量;variable 为全局变量申明语句,一般用在逐K线计算模式下声明一个全局变量或者在序列模式和逐K线模式下声明一个内部数组。序列模式下variable申明的序列变量会被强制转换为常数,故与普通的常数变量是没有区别的,因此序列模式下的序列变量不要使用variable进行申明。

 

申明并初始化超全局变量,GLOBALVARIABLE除了不支持数组外其他使用均与VARIABLE普通全局变量相同,
唯一不同之处在与GLOBALVARIABLE超全局变量在不会每次从头刷新指标数据时重新被刷新计算,而是始终会记住最后一次被赋予的值。
超全局变量一般会在客户停止后台程式化交易或者关闭框架图表后销毁重置。
所属函数组:控制语句

 

两个函数的说明我都贴出来了,哪里有写?

 

“唯一不同之处在与GLOBALVARIABLE超全局变量在不会每次从头刷新指标数据时重新被刷新计算,而是始终会记住最后一次被赋予的值。”,难道要反过来理解“如果不重头开始刷新,就会被刷新计算”?

[此贴子已经被作者于2013-4-15 11:34:49编辑过]

--  作者:klc
--  发布时间:2013/4/16 11:43:58
--  
jinzhe,哪里有写阿,应该是bug吧
--  作者:jinzhe
--  发布时间:2013/4/16 13:06:51
--  
给个例子,我们做个本地测试吧
--  作者:klc
--  发布时间:2013/4/21 22:12:28
--  

GLOBALVARIABLE:myvalue=0;

myvalue:=myvalue+1;

my:myvalue;

那你试试这个,随手写的,记住勾上仅刷最后一根


--  作者:vba
--  发布时间:2013/5/9 21:45:14
--  

我这也有这个问题,勾选了“仅刷新最后一根k线”后,超全局变量就控制不住了!请老师看看!


--  作者:fly
--  发布时间:2013/5/10 9:29:52
--  

说的问题已经看到.将尽快提交开发

 

你的问题--暂时使用VARIABLE定义的全局变量,+仅刷新最后一根K线,--可以解决

[此贴子已经被作者于2013-5-10 10:08:37编辑过]

--  作者:王锋
--  发布时间:2013/5/10 9:41:03
--  
以下是引用klc在2013-4-21 22:12:28的发言:

GLOBALVARIABLE:myvalue=0;

myvalue:=myvalue+1;

my:myvalue;

那你试试这个,随手写的,记住勾上仅刷最后一根

 

超全局变量根据他的使用型特,你这种测试方法根本就没任何意义的行为


--  作者:vba
--  发布时间:2013/5/10 12:23:15
--  

klc的例子不行,那就用我的例子,每根k线只发一次音

globalvariable:Play=0;
 
 MSGOUT(1,\'前,\'+numtostr(Play,0));
if 1 and barpos>Play then
begin
    Play:=barpos;
    MSGOUT(1,\'后,\'+numtostr(Play,0));
    playsound(1,\'d:\\default.wav\');
end

[此贴子已经被作者于2013-5-10 12:23:32编辑过]