以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  EXTGBSTRINGSET写参数入文件  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=168481)

--  作者:hnalbert
--  发布时间:2019/2/28 2:09:23
--  EXTGBSTRINGSET写参数入文件
RUNMODE:0; //工作于逐K线模式

VARIABLE:  i1=0;//定义参数值 

i1:=i1+1;
MSGOUT(1,\'i1 is : \' + NUMTOSTR(i1,5));
EXTGBSTRINGSET(\'参数\', NUMTOSTR(i1,5) );

savefile();//将i1写入文件

-----------------------
运行后窗口打印出i1的值为:1,2,3。。。。。681

但写入的文件确是681,681,。。。681

为什么文件里不是写入1,2,3。。。。。681呢?

--  作者:FireScript
--  发布时间:2019/2/28 9:07:46
--  
 EXTGBSTRINGSET 设置的全局变量只能记住最新值,也就是il的最大值。和VARIABLE不一样。

可以参考下这里对全局变量的说明:http://www.weistock.com/WeisoftHelp/index.html?zbgs003.htm



--  作者:hnalbert
--  发布时间:2019/2/28 9:15:33
--  
但我这是逐K线模式下运行,处理第一根K线时,最新值是1,savefile()写一次文件那就是应该写入了1.
                                    处理第二根k线时, 最新值是2,savefile()写一次文件那就是应该写入了2.
                                    。。。。
                                   因为写的时候,都是写入了当时的最大值。
逻辑难道不是这样吗?

--  作者:FireScript
--  发布时间:2019/2/28 9:55:17
--  
 你这个 savefile  具体代码是怎样的?输出的变量是用
VARIABLE全局变量i1 还是用EXTGBSTRING 取出来的?

--  作者:hnalbert
--  发布时间:2019/2/28 10:10:42
--  
i1是用EXTGBSTRING存放的。
savefile()就是用Document.GetExtString取出来的,如下:
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(xxx, 8)
s=Document.GetExtString("i1")
objFile.WriteLine s
保存在文件。

就这简单的代码。

--  作者:FireScript
--  发布时间:2019/2/28 10:54:06
--  
 不行的。超全局变量保存的只能是最新值。或者你也可以这样理解超全局变量的计算只在最新K上奏效或者说它只算最新 K上的情况。 机制上它和其他变量不太一样。
比如这个代码的运行,你会发现即使是从历史K上运行到最新K,i1的输出也始终是最新K上对应的值。
VARIABLE:  i1=0;
i1:=i1+1;
MSGOUT(1,\'i0 is : \' + NUMTOSTR(i1,5));
EXTGBSTRINGSET(\'i1\', NUMTOSTR(i1,5) );
MSGOUT(1,\'i1 is : \' +EXTGBSTRING( \'i1\'));



--  作者:FireScript
--  发布时间:2019/2/28 13:38:26
--  
 1.全局变量无法通过代码删除,只能手动删除
2.和VBA的交互只能全局变量传参。按照K先一个K传一个参数的是不行的。