-- 作者:zyghost119
-- 发布时间:2015/11/27 22:48:36
-- 请教逻辑写法(循环语句)
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线重合位置的最低点和最高点。
此主题相关图片如下:图例.jpg
![dvubb 按此在新窗口浏览图片](UploadFile/2015-11/2015112722491249299.jpg)
如图所示,假设当前时间是方框后面那根K线,那么前面重合的K线数量就是6根K线
[此贴子已经被作者于2015/11/27 22:50:09编辑过]
|
-- 作者:zyghost119
-- 发布时间:2015/11/30 14:10:13
--
还是没弄明白,我的意思是往前回溯判断当前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; 所属函数组:引用函数
[此贴子已经被作者于2015/11/30 14:10:39编辑过]
|
-- 作者:wenarm
-- 发布时间:2015/11/30 15:53:42
--
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);
|