以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  对临时变量的误解?  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=53003)

--  作者:李亚弟
--  发布时间:2013/6/13 14:40:03
--  对临时变量的误解?
刚刚做了一个测试临时变量的指标,代码:if time=140000 then a:=1;加载后发现在随意周期(不超过日线)上的随意时间,shift+Q都显示a的值为1。原本我以为这种临时变量在周期刷新后如果没有继续定义,就会消失。另外,重新定义后新值覆盖原值。那么这个和variable不就一样了吗?
--  作者:jinzhe
--  发布时间:2013/6/13 14:44:18
--  

http://www.weistock.com/bbs/dispbbs.asp?BoardID=4&ID=11990&skin=0

参考一下这个吧


--  作者:李亚弟
--  发布时间:2013/6/13 14:56:35
--  
if time=140000 then a:=1;//我的代码

//测试全局变量
variable:maxprofit=0;
IF BARPOS = 2 THEN
   MAXPROFIT := 10;
 
IF BARPOS = 10 THEN
   MAXPROFIT := 30;
 
AA:MAXPROFIT,linethick0;
 
 
//测试普通变量
n:=0;
IF BARPOS = 2 THEN
    n:=1;
IF BARPOS = 10 THEN
    n:=2;
BB:n,linethick0; 
我觉得这些代码有说到点子上,但是我的代码的测试结果和后面的效果上看起来互相矛盾。什么原因?

--  作者:jinzhe
--  发布时间:2013/6/13 15:51:12
--  

能截图说明一下哪里是矛盾的吗?我觉得这例子很明显的说明了全局变量和常规变量的区别


--  作者:李亚弟
--  发布时间:2013/6/13 16:02:35
--  
//测试全局变量
variable:maxprofit=0;
IF BARPOS = 2 THEN
   MAXPROFIT := 10;
 
IF BARPOS = 10 THEN
   MAXPROFIT := 30;
 
AA:MAXPROFIT,linethick0;
 
 
//测试普通变量
n:=0;
IF BARPOS = 2 THEN
    n:=1;
IF BARPOS = 10 THEN
    n:=2;
BB:n,linethick0; 
这段代码是很清楚的表明了普通变量和全局变量的区别。可是另外一个代码就把这个区别给搞混了。我一次只能传两张图,先传这两张。马上就来。
图片点击可在新窗口打开查看此主题相关图片如下:barpos2.png
图片点击可在新窗口打开查看
图片点击可在新窗口打开查看此主题相关图片如下:barpso10.png
图片点击可在新窗口打开查看


--  作者:李亚弟
--  发布时间:2013/6/13 16:05:01
--  
if time=140000 then a:=1;
加载这个代码之后,发现无论在那个时间,a的值都是1.上一次回复的两张截图的K线时间是140000之前的,现在我传一张K线时间正好是140000、一张K线时间再140000之后的图。
图片点击可在新窗口打开查看此主题相关图片如下:140000.png
图片点击可在新窗口打开查看
图片点击可在新窗口打开查看此主题相关图片如下:143100.png
图片点击可在新窗口打开查看


--  作者:jinzhe
--  发布时间:2013/6/13 16:15:19
--  

想要a在14点之前没有值,需要这么写

a:if(time>=140000,1,drawnull);

不做这样的限定,a会是因为系统设定的关系,自动向前赋值


--  作者:李亚弟
--  发布时间:2013/6/13 16:34:29
--  
那140000之后呢?
--  作者:jinzhe
--  发布时间:2013/6/13 16:38:11
--  

是只要这个点变1其他没有值?

那么上面的>=改成=


--  作者:李亚弟
--  发布时间:2013/6/13 16:49:17
--  
那么在140000赋值为1,之后就一直为1,那不就跟variable混起来了吗?