以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  求公式环境中全局变量动态命名方法  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=29680)

--  作者:Marcus
--  发布时间:2012/10/9 11:44:34
--  求公式环境中全局变量动态命名方法
  我想以 “公式名+品种名” 为全局变量命名,然后以此读写全局变量。

EXTGBDATA(GBDATA_NAME);//调用方式

GBDATA_NAME是以\'FORMULANAME+STKLABEL\'的形式命名的
已经尝试过使用STRCAT(DST,STR)函数,貌似不起作用,DST没有变化。

请问谁能解决这个问题?
--  作者:lichenghu
--  发布时间:2012/10/9 13:10:06
--  
您好,请稍等,工作人员正在解答中
--  作者:董小球
--  发布时间:2012/10/9 13:21:18
--  
楼主你用的函数不对
看看EXTGBSTRINGSET(GBDATA_NAME,GBDATA_NAME);这个函数的用法

--  作者:Marcus
--  发布时间:2012/10/9 13:52:59
--  
以下是引用董小球在2012-10-9 13:21:18的发言:
楼主你用的函数不对
看看EXTGBSTRINGSET(GBDATA_NAME,GBDATA_NAME);这个函数的用法

补充一下,我是想用参数化方式命名全局变量,相当于做了一个策略模板。比如公式名被修改后,全局变量名也跟着变化。

比如当前策略名是“策略1”,应用品种是IF10,FORMULANAME()返回应该是"策略1",STKLABEL返回应该是"IF10"
而这个策略对应的全局变量自动被命名为"策略1+IF10",键值可以为数字。


目前遇到的难题是在序列模式下,变量都是常数,不好做。

--  作者:Marcus
--  发布时间:2012/10/9 14:23:02
--  
以下是引用Marcus在2012-10-9 13:52:59的发言:

补充一下,我是想用参数化方式命名全局变量,相当于做了一个策略模板。比如公式名被修改后,全局变量名也跟着变化。

比如当前策略名是“策略1”,应用品种是IF10,FORMULANAME()返回应该是"策略1",STKLABEL返回应该是"IF10"
而这个策略对应的全局变量自动被命名为"策略1+IF10",键值可以为数字。


目前遇到的难题是在序列模式下,变量都是常数,不好做。

我尝试过以下想法,熟悉C语言的应该明白我的意思,但在公式环境下没成功。GBDATA_H还是\'H-\',后面两句没起作用。
GBDATA_H:=\'H-\';
STRCAT(GBDATA_H,STKLABEL());
STRCAT(GBDATA_H,FORMULANAME());


--  作者:王锋
--  发布时间:2012/10/10 16:33:15
--  
GBDATA_H:=\'H-\';
GBDATA_H:=STRCAT(GBDATA_H,STKLABEL());
GBDATA_H:=STRCAT(GBDATA_H,FORMULANAME());


--  作者:Marcus
--  发布时间:2012/10/11 13:14:24
--  
以下是引用王锋在2012-10-10 16:33:15的发言:
GBDATA_H:=\'H-\';
GBDATA_H:=STRCAT(GBDATA_H,STKLABEL());
GBDATA_H:=STRCAT(GBDATA_H,FORMULANAME());

已解决,谢谢!