以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  如何整合这个指标  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=162685)

--  作者:shensane
--  发布时间:2018/4/11 14:29:32
--  如何整合这个指标
ma60:ma(c,60);
ma100:ma(c,100);
ma180:ma(c,180);
ma300:ma(c,300);
n1:=todaybar;
dm:=4-INTPART(LOG(C));
jsj:ROUNDS(IF(sum(vol,n1)=0,C,sum(C*vol,n1)/sum(vol,n1)),2+dm),colorred;
DIFF := EMA(CLOSE,12) - EMA(CLOSE,26);
DEA := EMA(DIFF,9);
MACD:=2*(DIFF-DEA);

KD:H>ref(hhv(h,todaybar),1)&&H>ma300&&H>PRVSETTLEMENT&&(TIME>0103&&TIME<=1859);
KK:L<ref(llv(l,todaybar),1)&&L<ma300&&L<PRVSETTLEMENT&&(TIME>0103&&TIME<=1859);

T:=BARSLAST(L<(JSJ)||L<(ma180))+1;
T1:=BARSLAST(H>(JSJ)||H>(ma180))+1;

ZD1:COUNT(KD,T);
ZK1:COUNT(KK,T1);

ZD2:COUNT(zd1>0,T);
ZK2:COUNT(zk1>0,T1);


DD
我要跨品种调用ZD2,ZK2的值,如果单独调用需要两个跨品种函数,我想整合到一个上面,比如DK:(当ZD1>0时取ZD2,当ZK1>0时ZK2的值前面加一个负号)


--  作者:FireScript
--  发布时间:2018/4/11 14:35:35
--  
比如DK:(当ZD1>0时取ZD2,当ZK1>0时ZK2的值前面加一个负号)

不是很清楚 这段和你说的引用有什么关联。详细描述下。另外你引用zd2和zk2只能一个个引用,暂时没有办法一次引用多个。
[此贴子已经被作者于2018/4/11 14:36:00编辑过]

--  作者:shensane
--  发布时间:2018/4/11 14:41:15
--  
DK:IF(ZD1>0,ZD2,0)OR IF(ZK1>0,-ZK2,0);

然后我用跨品种函数直接调用DK就可以了啊,这样表达对不对

--  作者:FireScript
--  发布时间:2018/4/11 14:45:40
--  
 这样的结果是dk值只能是1 或者0 。因为你用了 or .这样返回值只能是1或者0 了。

dk 取值当zd1>0 时候取zd2,否则取得0.
          当zk1>0 时候取-zk2,否则取0 
你要表达的是这样吗?
如果是这样的话 如果zk1>0且zd1>0 同时成立 这个逻辑如何处理?

--  作者:shensane
--  发布时间:2018/4/11 14:48:23
--  
为什么返回值只能是1和0,肯定不会同时成立的
--  作者:shensane
--  发布时间:2018/4/11 14:51:27
--  
我的本意是要ZD2和ZK2的值,而且他们肯定不会同时出现,但是我想区别他们就ZK2有值的时候取加一个负号,如果单独引用跨品种函数用太多了金字塔软件没法运行,如果能整合到一起,跨品种引用就能减少一半
--  作者:FireScript
--  发布时间:2018/4/11 14:54:01
--  
 or  是一个逻辑运算,返回值就是0或者1, and 也是同样道理。

if(zd1>0,zd2,if(zk1>0,-zk2,0))

这样就可以了。

--  作者:shensane
--  发布时间:2018/4/11 14:55:29
--  
谢谢
--  作者:wenarm
--  发布时间:2018/4/11 15:03:24
--  

两个变量之间不是互斥关系,你这个需求只能分成两条语句引用,没法合并给出。