以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  金字塔公式变量的初始化问题  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=52622)

--  作者:wd369
--  发布时间:2013/5/30 15:35:33
--  金字塔公式变量的初始化问题

下面是测试公式:

===========================

runmode:0;//逐K线模式

a:=1;
if  C>O then  begin
a:=0;
b:=1;
end

aa:a;
bb:b;

===========================

 

按说 b 不应该始终是1啊. 最好是全部公式变量在开始全部初始化为0;

 

 

[此贴子已经被作者于2013-5-30 15:36:20编辑过]

--  作者:双保险
--  发布时间:2013/5/30 15:41:21
--  
既然是初始化当然都是o哦
--  作者:wd369
--  发布时间:2013/5/30 15:45:28
--  

但bb(=b) 应该在 C>O 的条件下才可能是1,其它情况应该是0 ;

但公式结果显示, 全部是1. 说明 条件里面的变量b最初没有初始化为=0,而是初始化为条件里面的=1.

 

我没有用最新的金字塔版本,不知道最新版是否也这样结果.


--  作者:jinzhe
--  发布时间:2013/5/30 16:06:18
--  

记得以前说过是因为B没有初始的值,然后因为后面被赋值,最后自动对前面没有被赋值的序列进行了赋值


--  作者:wd369
--  发布时间:2013/5/30 16:28:12
--  
以下是引用jinzhe在2013-5-30 16:06:18的发言:

记得以前说过是因为B没有初始的值,然后因为后面被赋值,最后自动对前面没有被赋值的序列进行了赋值

个人认为,这样的处理会造成失误, 还是把公式所有变量先初始化为0 更好.


--  作者:jinzhe
--  发布时间:2013/5/31 8:50:07
--  
因为后面用BB:B给显示出来了,所以显示在k线上不能有空数值,因为又没有其他赋值,所以统一的被赋值为1,如果代码写成

runmode:0;//逐K线模式

a:=1;
if  C>O then  begin
a:=0;
b:=1;
end
if c<=o then b:=drawnull;
aa:a;
bb:b;

 

那么,就可以了
--  作者:wd369
--  发布时间:2013/5/31 12:29:01
--  
以下是引用jinzhe在2013-5-31 8:50:07的发言:
因为后面用BB:B给显示出来了,所以显示在k线上不能有空数值,因为又没有其他赋值,所以统一的被赋值为1,如果代码写成

 

补救方法我知道, 这肯定是个问题,稍不留神就会出错,而且很难觉察.

我只是建议,看在以后版本中能否修正下.

 


--  作者:RogarZ
--  发布时间:2013/5/31 15:18:36
--  
这个全局变量的定义   C# C++ JAVA  专业的编程软件都是这样处理的。

赋值  你从0——>1  从1——>0 这两个都是需要定义的。
若自动变成0其实是不合时宜的 
你现在只是1,0是容易,但当处理的东西多了就有缺陷了

--  作者:wd369
--  发布时间:2013/5/31 17:10:45
--  
以下是引用RogarZ在2013-5-31 15:18:36的发言:
这个全局变量的定义   C# C++ JAVA  专业的编程软件都是这样处理的。

赋值  你从0——>1  从1——>0 这两个都是需要定义的。
若自动变成0其实是不合时宜的 
你现在只是1,0是容易,但当处理的东西多了就有缺陷了

 

不会吧?   在C 或者 java 里面, 全局变量 如果没有初始化, 会被编译器赋缺省值的(或空 或0).

金字塔公式里面,即使最开始是在if 里面 出现的变量,其实也是按照全局变量来使用的.   

 

大智慧中对这种情况,是显示的空值(应该就是初始化为空值). 这样也不错,至少可以从结果中看出错漏来.

 

另: 我上面说的全局变量不是金字塔公式里面的GLOBALVARIABLE.