以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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 -- 两个变量之间不是互斥关系,你这个需求只能分成两条语句引用,没法合并给出。 |