以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  代码加载在主图和副图上效果不同  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=12877)

--  作者:zzzlondon
--  发布时间:2012/7/11 10:08:28
--  代码加载在主图和副图上效果不同

代码如下,逐K线,仅刷新最后一根

x1:=DYNAINFO2(28,\'IF07\');
x4:=DYNAINFO2(34,\'IF08\');
diff1:=x1-x4;

tmp1:=EXTGBDATA(\'AB02\');

if diff1>=-7.4 then begin
  
  debugfile(\'D:\\test2.txt\',numtostr(x1,1)+\' \'+numtostr(x4,1),1);
  extgbdataset(\'AB02\',tmp1+1);
end

 

应用在IF1207主图上时,一切正常,全局变量一直正常增长,应用到副图上时,全局变量之间跳到6000多,一会儿就到几万了,为什么呢?


--  作者:zzzlondon
--  发布时间:2012/7/11 10:27:13
--  

后来发现加载到主图后全局变量也会莫名增加到几万


--  作者:zzzlondon
--  发布时间:2012/7/11 10:27:43
--  

另外加入交易语句后,偶尔会触发,而不是一定触发

 

x1:=DYNAINFO2(28,\'IF07\');
x4:=DYNAINFO2(34,\'IF08\');
diff1:=x1-x4;

tmp1:=EXTGBDATA(\'AB02\');

 if diff1>=-7.4 then begin
  buyshort(1,units,limitr,x1),IGNORECHECKPRICE;
  
  debugfile(\'D:\\test2.txt\',numtostr(x1,1)+\' \'+numtostr(x4,1),1);
  extgbdataset(\'AB02\',tmp1+1);
 end


--  作者:just
--  发布时间:2012/7/11 10:34:28
--  

http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=1246&page=1&star=1

 


--  作者:zzzlondon
--  发布时间:2012/7/11 10:44:32
--  
以下是引用just在2012-7-11 10:34:28的发言:

http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=1246&page=1&star=1

 

debugfile输出行数和全局变量的数值也不一样,不知道为什么


--  作者:王锋
--  发布时间:2012/7/11 11:19:12
--  
EXTGBDATA 的全局变量是保存在你本地计算机的,不会清零,你去不断的累加当然会越来越多
--  作者:zzzlondon
--  发布时间:2012/7/11 13:32:52
--  
以下是引用王锋在2012-7-11 11:19:12的发言:
EXTGBDATA 的全局变量是保存在你本地计算机的,不会清零,你去不断的累加当然会越来越多

这个我当然知道,这段代码中EXTGBDATA 和debugfile是放在同一个if 。。。then里的,照理EXTGBDATA 的数值应该和输出的行数是相等的,当时实际不相等,EXTGBDATA 不一会就到几万,而输出只有几百行


--  作者:zzzlondon
--  发布时间:2012/7/13 9:27:03
--  

有没有人愿意测试下看看是不是也是这样。。


--  作者:董小球
--  发布时间:2012/7/13 10:50:12
--  
给你个范例



INPUT:X(2423,1,100000);
IF NOT(ISLASTBAR) THEN EXIT; 
//http://www.weistock.com/WeisoftHelp/quanjubianliang.htm
if X=DYNAINFO(  7)  then begin
g8:=EXTGBDATA(\'A\');
EXTGBDATASET(\'A\',g8+1);
END

JS:EXTGBDATA(\'A\');


所以你要在最开始加上IF NOT(ISLASTBAR) THEN EXIT;  就可以避免了

--  作者:zzzlondon
--  发布时间:2012/7/17 9:44:34
--