以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  有几个问题需要帮助  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=163001)

--  作者:shensane
--  发布时间:2018/4/25 9:17:07
--  有几个问题需要帮助
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);
s:SUMBARS(TODAYBAR=1,5);//包含了当日
H4:hhv(h,s);
l4:llv(l,s);

N:=BARSLAST(DATE<>REF(DATE,1))+1;
HR4:hHV(H,N+4*REF(N,N));
LR4:lLV(L,N+4*REF(N,N));

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))+1;
T1:=BARSLAST(H>(JSJ))+1;

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

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

DK:if(zd1>0,zd2,if(zk1>0,-zk2,0));


这是我的一个指标,我这里面用到了当天的JSJ这个指标,我不做日内有可能隔夜,现在有一个问题,比如当天收盘ZD2,ZK2有可能是大于0,然后我要留隔夜,但是第二天开盘因为JSJ改变,所有的又重新计算了,所有我想加一个限制条件;当前一天收盘的时候ZD2是大于0,那么取ZD2=1的JSJ,当前一天收盘的时候ZD2是等于0,那么取当天的JSJ,

当前一天收盘的时候ZK2是大于0,那么取ZK2=1的JSJ,当前一天收盘的时候ZK2是等于0,那么取当天的JSJ,


--  作者:FireScript
--  发布时间:2018/4/25 9:37:10
--  
 举个例子,这是昨日最后一个K的c的引用方式
s:ref(c,BARSLAST(TODAYBAR=1)+1);

你上面的也是类似的去引用zd2,然后再进一步判断就行了。
a:ref(zk2,BARSLAST(TODAYBAR=1)+1);//昨日收盘时的zk2
result:if(a=0,jsj,ref(jsj,BARSLAST(zk2=1)));//这句意思是如果a=0取当前jsj,否则取上次zk2=1时候的jsj