以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  金字塔软件问题提交  (http://222.73.7.161/bbs/list.asp?boardid=2)
----  求助:关于后台运行全局变量使用问题  (http://222.73.7.161/bbs/dispbbs.asp?boardid=2&id=8807)

--  作者:wsanle
--  发布时间:2011/11/4 15:56:42
--  求助:关于后台运行全局变量使用问题

在后台运行程序时有两个问题:

1、使用EXTGBDATA(X)取值时,必须先用EXTGBDATASET(X,S)对X变量赋值,那么请教对X事先怎样初始化:X:=0;  variable:X:=0; 还是必须在金字塔系统\\工具\\数据\\全局变量数据管理 中事先定义 X 为 0,如果是按最后一种方法事先定义X为0后,那么是否是每次启动程序时就会对X 的值初始化一次,还是只要不关机重启,X就一直保留最后的赋值,只要在重新开机时才对X重新初始化X=0?

2、REF(X,1)函数的使用问题我的理解是:在图表模式下运行,对Open/high/low/close等系统行情数据,直接可以用REF(X,1)调用前一个数据,对于根据Open/high/low/close计算而来的数据如 :   AA:=TENTERPRICE();   HighEntry:=if(Ttholding>0,hhv(high,TEnterBars),high);  BB:=AA-HighEntry;

用图表运行模式,可以取REF(BB,1),问题是在后台运行模式下怎样取REF(BB,1)或REF(BB,N),即使用variable:BB:=0;进行了定义,也取不到REF(BB,1),请教该怎么办?


--  作者:fly
--  发布时间:2011/11/4 16:33:42
--  

1.

在使用全局变量之前加上类似这样的,系统会自动初始化为0的.

x:=\'x\';

 

这种全局变量只会初始化一次.以后就总是保持最后的赋值.

如果想每日收盘时都变为0,可在最后加上 if currenttime>closetime(0) then EXTGBDATASET(\'X\',0);

当天收盘之后,就会是0了.

 

如果想每次开机都变成0,楼主说的方法可行.

 

2.

  TENTERPRICE--得到当前位置的上次开仓价---该函数依赖TBUY等交易语句或者在交易监控中的手工干预的成交记录.

   您用一个简单的公式,

   分别取取这两个值,看是否可以取到正确的值,REF(TENTERPRICE,1)和ref(if(Ttholding>0,hhv(high,TEnterBars),high),1)

   如果可以,再用取的值相减.