以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  全局变量赋值后,怎么被恢复为初始值呢?  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=68976)

--  作者:ivan
--  发布时间:2014/8/20 11:44:10
--  全局变量赋值后,怎么被恢复为初始值呢?
 GLOBALVARIABLE:kcss=0,kg=1;

  if TISPRVREMAIN(1) then
   BEGIN
    TBUYSHORT(1,1,MKT,0,0,\'\',jq);
 MSGOUT(1,\'jq开空\');
    kcss=kcss+1;
 MSGOUT(1,NUMTOSTR(kcss,0));
    sleep(2080);
   end

全局变量赋值后,怎么被恢复为初始值呢?

这个kcss变量,刚加上1后,kcss=1,再轮询又发现kcss=0 

到底怎么处理才好呢?

--  作者:Ivan
--  发布时间:2014/8/20 11:57:35
--  
不要用数据库全局变量来处理,否则多品种多周期组合时,数据库全局变量太多,不好管理。
--  作者:admin
--  发布时间:2014/8/20 11:59:51
--  

如果你中间停止过后台程序化那么他会被重新赋值的,或者你中间就是有其他代码又重新赋值了,建议你用debugfile函数在kcss所有赋值的地方都加上跟踪一下


--  作者:Ivan
--  发布时间:2014/8/20 12:24:51
--  
我在代码中用了msgout监控啊,看到就是刚赋值+1,kcss=1,下一轮询又发生kcss=0了
--  作者:Ivan
--  发布时间:2014/8/20 12:29:47
--  
没有其它代码会对kcss赋值,只有在平仓代码里会-1,别的地方都没有对kcss操作,监控里也没看到平仓提示的:

  if kg=1 then
   BEGIN
    TSELLSHORT(1,1,LMT,c,0,\'\',yq);
    kg:=0;    
 MSGOUT(1,\'yq平空\');
   end
  if TISPRVREMAIN(4) then
   BEGIN
    TSELL(1,1,MKT,0,0,\'\',jq);
 MSGOUT(1,\'jq平多\');
    kcss:=kcss-1;
 MSGOUT(1,NUMTOSTR(kcss,0));
    sleep(2080);
   end

--  作者:yukizzc
--  发布时间:2014/8/20 13:53:27
--  

没有发现你这种情况,你用这段代码测试看,如果每次轮询kcss都重置的话他会重复去开多的,但事实没有。你应该是-1的操作触发了吧

GLOBALVARIABLE:kcss=0,kg=1;

  if kcss=0 then
   BEGIN
    tbuy(1,1,MKT,0,0,\'\',\'\'),ALLOWREPEAT;
 msgout(1,\'jq开空\');
    kcss:=kcss+1;
 msgout(1,NUMTOSTR(kcss,0));
   
   end


--  作者:Ivan
--  发布时间:2014/8/20 16:16:28
--  
  if kg=1 then
   BEGIN
    TSELLSHORT(1,1,LMT,c,0,\'\',yq);
    kg:=0;    
 MSGOUT(1,\'yq平空\');
   end
  if TISPRVREMAIN(4) then
   BEGIN
    TSELL(1,1,MKT,0,0,\'\',jq);
 MSGOUT(1,\'jq平多\');
    kcss:=kcss-1;
    EXTGBDATASET(\'kcss\',kcss1-1);
 MSGOUT(1,NUMTOSTR(kcss,0));
    sleep(2080);
   end

只有这个地方会-1操作,但如果进入这里的话,那么会输出‘jg平多\'的,但从监控来看从来没有没看到这个输出结果。

会不会跟下面代码最后一行有关?

input:ss(3,1,10,1);
VARIABLE:kcss=0,kg=1;
kcss1:=EXTGBDATA(\'kcss\');

//后台模式
if not(islastbar) or workmode<>1 then exit;

--  作者:yukizzc
--  发布时间:2014/8/20 16:20:39
--  

你下面又用variable定义kcss??

variable定义的全局变量单根k中会重新初始化的,你用的GLOBALVARIABLE不会有这个情况。


--  作者:RogarZ
--  发布时间:2014/8/20 17:14:02
--  
WRITEINIFILE
GETINIFILE

早就支持写文件了
直接写文件吧 怎么也不会乱 管理也简单
[此贴子已经被作者于2014/8/20 17:14:12编辑过]

--  作者:Ivan
--  发布时间:2014/8/21 14:08:06
--  
写文件会不会影响速度啊?

另外TISPRVREMAIN(4)是指本策略下的上笔交易,还是包含所有后台交易其它下的单子呢?