1)设计了RSV; 2)8个待选品种,各自的RSV计算存储在数组x[9]中;3)然后买进RSV最大的4个;
请问第3)个语句该怎么实现?感觉没办法把排序前4的品种的“代码调用”出来?
排序函数的话,只能单纯给出个数字,我要怎么样说把那个 “排名第1、第2” 的品种的 代码 调用到 tbuy()呢?
用自定义数据功能排序,然后选出前4名的下单
自定义数据功能 ,需要您本地按照教程建自定义数据
http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=10547
需要补充的是属性设置里需要勾选 生成横向排名数据,
这样计算结果是被引用数据在所选品种范围内的大小排序。
对前4名下单
dd:selfdata('data1');
a1:VALUEWHEN(dd=1,STKLABEL);
tbuy(1,1,mkt,0,0,'',a1);
a2:VALUEWHEN(dd=2,STKLABEL);
tbuy(1,1,mkt,0,0,'',a2);
a3:VALUEWHEN(dd=3,STKLABEL);
tbuy(1,1,mkt,0,0,'',a3);
a4:VALUEWHEN(dd=4,STKLABEL);
tbuy(1,1,mkt,0,0,'',a4);
我的 3.24版本的 分析菜单里 没有 自定义数据这个选项 ,,不会是付费版本才有的吧?
好吧 我用的是免费版本的。下面用了hod2函数,写的代码:
1、但是编译公式提示 hod2函数未定义,请问为何?
2. 我的给a1赋值的语句中, R[i]=1这个表达合法吗?不太懂金字塔里面的数组功能到底如何
2、另外,还是没法实现 对前4名下单吧?因为我的R[i]存储的是1-9这个排名,不包含对应这个排名的品种的代码等信息;
这个排名和品种代码怎么样关联起来呢?请老师指点出路啊,谢谢、、
//定义RSV的计算:
up:=max(close-ref(close,1),0); //上涨的
down:=min(close-ref(close,1),0); //下跌的
absup:=abs(up);
absdown:=abs(down);
rsv:sma(absup,30,1)/(sma(absup,30,1)+sma(absdown,30,1)),linethick0; //涨幅数/(涨幅+跌幅)
//对9个待选品种,RSV进行排序,30分钟频率
variable:x[9]=0;
variable:r[9]=0;
x[1]:=stkindi('AU00',RSV,0,4,0); //由X引用了计算出来的每个品种的RSV值
x[2]:=stkindi('CU00',RSV,0,4,0);
x[3]:=stkindi('AL00',RSV,0,4,0);
x[4]:=stkindi('J00',RSV,0,4,0);
x[5]:=stkindi('TC00',RSV,0,4,0);
x[6]:=stkindi('TA00',RSV,0,4,0);
x[7]:=stkindi('ME00',RSV,0,4,0);
x[8]:=stkindi('MA00',RSV,0,4,0);
x[9]:=stkindi('AG00',RSV,0,4,0)
R[1]:HOD2(X,9,X[1]),linethick0; //针对每个品种的RSV,判定它的排名
R[2]:HOD2(X,9,X[1]),linethick0;
R[3]:HOD2(X,9,X[1]),linethick0;
R[4]:HOD2(X,9,X[1]),linethick0;
R[5]:HOD2(X,9,X[1]),linethick0;
R[6]:HOD2(X,9,X[1]),linethick0;
R[7]:HOD2(X,9,X[1]),linethick0;
R[8]:HOD2(X,9,X[1]),linethick0;
//对第1名下单
a1:VALUEWHEN(R[i]=1,STKLABEL);//RSV排名第1的,取它的代码名称出来??
tbuy(1,1,mkt,0,0,'',a1); //对它下单
哦,是的。头晕了,我再检查下、、