H1:=callstock(stklabel,vtHIGH,4,-1);
H2:=callstock(stklabel,vtHIGH,4,-2);
H3:=callstock(stklabel,vtHIGH,4,-3);
L1:=callstock(stklabel,vtLOW,4,-1);
L2:=callstock(stklabel,vtLOW,4,-2);
L3:=callstock(stklabel,vtLOW,4,-3);
30分高点:MIN(H1,MIN(H2,H3)),COLORGREEN;//30分高点中的最小值
30分低点:MAX(L1,MAX(L2,L3)),COLORGREEN;//30分低点中的最大值
30分重合判断:if(30分低点<30分高点,1,0),NODRAW;//=1时有重合
现在的问题是,我自己的代码只能判断当前K线之前3根K线有无重合,那么在出现多根K线重合的时候,如何使用循环语句统计重合K线的数量,并取出K线重合位置的最低点和最高点。
如图所示,假设当前时间是方框后面那根K线,那么前面重合的K线数量就是6根K线
另外还有一个问题,就是取日线高低点的问题,在小周期上取得的日线高低数据和日线级别取得的高低点数据不一致。如下图所示。应该是因为小周期上把当天日盘和当天夜盘的时间当作一天了,而不是按照交易日计算的,这个问题怎么解决,请指点一下。
LOD2可以看下这个函数例子,建立一个数组直接可以取出数组最大或最小值。
42、为什么我看日线上的最高价在1分或者5分钟图上找不到?总比日线最高价低几个价位
答:金字塔的日线生成是使用的交易所当日给出的开高低收报价,而分钟K线是使用当日分笔数据生成,对于国内期货分笔数据是交易所每隔0.5秒一次的快照数据,在行情变化剧烈时,这0.5秒会撮合很多笔交易,但是交易所只给了间隔0.5秒的快照,也就是传递过来的分笔数据不是所有成交报价的。故在极端位置会出现分钟线与日线有不一致的情况
还是没弄明白,我的意思是往前回溯判断当前K线之前的K线有重合区域的K线数量,这个重合数量是不定的。而不是求排序。
求数组按从低到高排序的名次。
用法:
LOD2(X,N,K):求某一周期X数组内N个元素(N <= 最大元素数)的K值依照从低到高排序后为第几个低值,返回值为排序名次。N=0则表示数组全部元素参与计算
例如:
我们根据KDJ的K值由大到小排序,品种为CU,RU,M,CF,IF
1、首先建立数组
VARIABLE: X[5]=0;
X[1]:=STKINDI('CU00','KDJ.K',0,6,0);
X[2]:=STKINDI('RU00','KDJ.K',0,6,0);
X[3]:=STKINDI('M00','KDJ.K',0,6,0);
X[4]:=STKINDI('CF00','KDJ.K',0,6,0);
X[5]:=STKINDI('IF00','KDJ.K',0,6,0);
2、通过LOD2函数排序
CU排名:LOD2(X,5,X[1]),LINETHICK0;
RU排名:LOD2(X,5,X[2]),LINETHICK0;
M排名:LOD2(X,5,X[3]),LINETHICK0;
CF排名:LOD2(X,5,X[4]),LINETHICK0;
IF排名:LOD2(X,5,X[5]),LINETHICK0;
所属函数组:引用函数
30分高点:MIN(H,ref(h,1)),COLORGREEN;//30分高点中的最小值
30分低点:MAX(L,ref(l,1)),COLORGREEN;//30分低点中的最大值
//***********************************************
//上述的条件单独创建一个公式文件,在使用STKINDI()去引用。
//***********************************************
30分低点:STKINDI();
30分高点:STKINDI();
30分重合判断:if(30分低点<30分高点,1,0),NODRAW;//=1时有重合
a:BARSLAST(30分重合判断=0)+1;//计算重合的根数。
hh:HHV(HIGH,a);
ll:llv(low,a);