想跟各位大佬和老师咨询下,以下第4条和第5条应该怎样实现??
策略想表达的:
1.求出前N天的涨跌幅
2.统计出前N天中涨幅1%以内的数量,1%-2%的数量,2%-3%的数量,3%.........以此类推
3. 假设第二条里A=涨幅1%以内的数量,B=2%-3%的数量,C=3%-4%的数量.......那么每天开盘比较一下谁的数量最多,也就是比较一下ABC......这些变量的大小,然后返回的不是统计到的数量,而是对应的变量名称。
4.比如今天开盘获取到前N根bar中涨幅1%以内的数量是最多的,即变量A是最大的。那么就用今天的OPEN*1%,如果B是最大的那就OPEN*2%,以此类推。
5.因为ABCDE中的两个或者更多有可能是相等的,如果使用变量AAA=ABCDE其中最大的,假设ABCDE分别为2 4 4 5 6,那么变量AAA就等于4;如果我在条件语句中使用IF(变量AAA=4),那就分不清到底应该使用B还是使用C。所以我想让他返回名称而不是返回对应的数值
问题1:我这个代码想让他智能一些,比如过去N根bar的涨幅中1%以内的最多,那么就用OPEN*1%画一条线,B最多就用OPEN*2%画一条线,如果AB相等就用OPEN分别乘,然后画两条线。
问题2:TBL语言中只有MAX函数能判断两个数值的大小,返回的也是数值。请问有没有类似简语言里MAX1函数效果的函数,能一次判断多个数值里的最大值,并且返回的是相应的变量名称?? 是否只能用数组解决??
最后写个伪代码表达一下想表达的意思
Params
Vars
Events
onBar(ArrayRef<Integer> indexs)
{
变量A= 过去N根bar中涨跌幅1%以内的数量;
变量B = 过去N根bar中涨跌幅1%-2%的数量;
变量 C= 过去N根bar中涨跌幅2%-3%的数量;
变量 D= .........................
变量AAA=其中数值最大的变量(A,B,C,D,E.......);(返回结果:变量AAA=A/B/C/D.....)
IF( 变量AAA = B AND 变量AAA=C)//意思就是如果变量B和变量C的数值是相等的(B=C同时又都是ABCDE中最大的)
{
画线:OPEN*0.01
画线:OPEN*0.02
}
}
1.求出前N天的涨跌幅
我建议你先想好第一个问题,前N天涨跌幅指什么
一般意义涨跌幅为 (close-open)/close[1];
也可以是(close-close[1])/close[1];
如果你这里的N对应着回溯的周期,那么就是
(close-close[N])/close[N];
意思是前N天的当日涨跌幅。
那就只是涨跌幅了
定义序列变量a
a = (close-open)/close[1];
对a回溯就是N天前的涨跌幅