以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  这个可以代替跨品种引用吗  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=162703)

--  作者:shensane
--  发布时间:2018/4/12 6:00:44
--  这个可以代替跨品种引用吗
引用操作符

例如:
"INDIE.VAR"(P1,P2) 引用INDI指标的VAR输出,计算参数为P1,P2。若没有指定公式线,系统将取最后一行公式输出
数据类型有TICK、MIN1、MIN3、MIN5、MIN10、MIN15、MIN30、MIN60、DAY、WEEK、MONTH、YEAR、MULTIDAY、MULTIMIN、MULTISEC、MULTIHOUR、QUARTER、SEMIYEAR、SOLARTERM
"MACD#WEEK"(26,10,5) 引用周线数据的MACD指标最后一行公式输出
"MACD"表示该指标的最后—行公式输出并且使用公式的默认参数。
"000001$CLOSE" 引用品种000001的收盘价
"SZ000001$CLOSE#WEEK" 引用SZ市场的品种000001周线收盘价
"VOL##DAY"引用日线数据的前一周期的VOL指标
引用数据时,需要实现确认被引用品种周期数据齐全,再首次使用或者在不确定时,请手工进行数据补充工作
"DLLNAME@FNCNAME"(P1,P2) 引用DLLNAME.DLL的FNCNAME函数,计算参数为P1,P2
用户函数模式:#用户函数.指标线(参数)#
例如:#test01.B1(20,45)#,表示调用test01指标的B1输出线,参数为20和45,使用用户函数模式比扩周期引用更加节省内存,提高运行效率.
所属函数组:控制语句

比如建立指标A:ma5:ma(c,5);
ma10:ma(c,10);
ma50:ma(c,50);
ma60:ma(c,60);
ma100:ma(c,100);
ma180:ma(c,180);
ma300:ma(c,300);
n10:=todaybar;
dm:=4-INTPART(LOG(C));
N:=barslast(date<>ref(date,1))+1;
JSJ:ROUNDS(IF(sum(vol,n10)=0,C,sum(C*vol,n10)/sum(vol,n10)),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>1303&&TIME<=1859);
KK:L<ref(llv(l,todaybar),1)&&L<ma300&&L<PRVSETTLEMENT&&(TIME>1303&&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);

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

如何用这个引用操作符同周期跨品种引用,避免用FZD1:stkindi(\'DqJD09\',\'C.DK\',0,1);消耗太大内存


--  作者:wenarm
--  发布时间:2018/4/12 8:11:21
--  
可以。
--  作者:shensane
--  发布时间:2018/4/12 8:17:54
--  
我不会,你帮我把这个跨周期函数FZD1:stkindi(\'DqJD09\',\'C.DK\',0,1);改成用操作引用符的,,改成一个范例我后面自己套用
--  作者:wenarm
--  发布时间:2018/4/12 8:43:20
--  

抱歉,前面说错了。这种方式不能跨品种引用指标值,你只能用STKINDI