以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  [求助]几个函数问题请教  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=174761)

--  作者:vakoth
--  发布时间:2020/3/4 20:37:08
--  [求助]几个函数问题请教
1: 请问金字塔公式里面有没有这样的函数
     函数名(条件,输出值,条件成立向前或向后第几次成立)
  输出值可以是才C,O,H,L或者K线距离个数等数据;其实K线个数有BARSSINCE2(X,N)函数可以输出,但是前面的几个数据好像没找到函数

2 REF(X,N)和全局变量混合编程,有什么注意的地方没有?

3 如果我想判断某个数据是不是不存在,是不是可以写成 X=DRAWNULL,我找了通达信和金字塔里面,只有找到这个可以函数了,不知道对不对?

--  作者:vakoth
--  发布时间:2020/3/4 20:55:02
--  
还有一个问题,AA:=X*AA\'+YAA\'\'
AA\'为AA的前一个值,也就是ref(AA,1)的意思
AA\'\'就是AA的前第二个值得意思,请问这个能用全局变量来表示吗?

还有,AA=BB\'+LOW*V;
        BB=LOW*H+AA\'+BB\';
这样的可以用全局变量来写吗,如果不能,用IF写吗?
[此贴子已经被作者于2020/3/4 20:56:00编辑过]

--  作者:vakoth
--  发布时间:2020/3/4 21:15:57
--  
当一个公式的除数为0的情况下,输出值应该是空的,请问除了用判断语句判断除数不能为0外还有没有其他的办法来排除?
--  作者:wenarm
--  发布时间:2020/3/4 22:59:17
--  

1.没有,这种可以自己通过算法实现。

2.他们之间本身也没有什么影响。全局变量也是变量,只是生命周期更长而已,

3.不对。变量你都定义了,它自然就存在。没有判断是不是存在这一说。

 

还有一个问题,AA:=X*AA\'+YAA\'\'

AA\'为AA的前一个值,也就是ref(AA,1)的意思
AA\'\'就是AA的前第二个值得意思,请问这个能用全局变量来表示吗?
 
这种逻辑只能是全局变量处理。
建议你百度看下全局变量的定义。这有有利于你理解其用途。
 
没别的办法。分母不能为0 ,这种逻辑都必须判断,和逻辑中处理边界情况以道理。

--  作者:wenarm
--  发布时间:2020/3/5 8:56:14
--  

1.输出30天以内kdj的K和J相交(或者说是穿过)倒数第一次第二次日线的最高值或者最低值

aa:cross(k,j);
bb:count(aa=1,30);

temp1:=VALUEWHEN(aa=1,H);
temp2:=ref(temp1,SUMBARS(aa=1,1));
倒数1:if (bb>=1,temp1,0);
倒数2:if (bb>=2,temp2,0);

 

3你说的这种情况是无效值。均线计算不足就不参与计算。系统内部已经处理过了。

至于分母为0 ,常规情况下pel中对这种情况做过处理,但是不适用所有的情况,你只能在发现分母为0会造成影响时,将其过滤掉。


--  作者:vakoth
--  发布时间:2020/3/5 10:53:21
--  

3你说的这种情况是无效值。均线计算不足就不参与计算。系统内部已经处理过了。

至于分母为0 ,常规情况下pel中对这种情况做过处理,但是不适用所有的情况,你只能在发现分母为0会造成影响时,将其过滤掉。



我也测试过,知道PEL有处理过,TDX也测试过,但是万一你们处理的不是我想要的数值,我想用自己的方式处理,有没有办法?


--  作者:vakoth
--  发布时间:2020/3/5 13:03:42
--  

还有一个问题,AA:=X*AA\'+YAA\'\'

AA\'为AA的前一个值,也就是ref(AA,1)的意思
AA\'\'就是AA的前第二个值得意思,请问这个能用全局变量来表示吗?
 
这种逻辑只能是全局变量处理。

我看了,我是不明白这里的AA\'\'怎么表示,难道是
VARIABLE:AA:=0;
AA:=X*AA+Y*REF(AA,1):

--  作者:FireScript
--  发布时间:2020/3/5 13:11:13
--  
要判断一个值是否是有效值。比如均线不足时候的均线计算,可以如下方法尝试:

z:ma(c,10);
cd:z=z;



--  作者:wenarm
--  发布时间:2020/3/5 13:15:56
--  

计算时有无效值的问题,你就不用考虑了。只能靠系统限定。或者条件限定。

没法判断。

 

我看了,我是不明白这里的AA\'\'怎么表示,难道是
VARIABLE:AA:=0;
AA:=X*AA+Y*REF(AA,1):

就是你这样表达的。

[此贴子已经被作者于2020/3/5 13:18:20编辑过]

--  作者:vakoth
--  发布时间:2020/3/6 0:03:44
--  
非常感谢两位,其实我是有需要才提出疑问的,可能你是认为条件不够,就不画那部分线就可以了,以前我也这样觉得,直到我遇到了当人家要把还没有达到条件的时候,要把他的值算入后面的数值,我头痛了好久没想到办法才提出疑问的,就像AA:=X*AA+Y*REF(AA,1):这个公式吧,当AA\'\'还没有达到要求的时候,指标是画不出来相对应的线,但是它会影响AA的数值啊,所以,版主请原谅,我不是在钻牛角尖

z:ma(c,10);
cd:z=z; 
嗯,这个主意不错,可以代替使用,但是万一中间有某两天的均线平直两天的数值完全一样呢,也许你们觉得我真是在钻牛角尖,但是,国外有的的软件确实有这个判断的函数