以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  请教逻辑写法(循环语句)  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=87819)

--  作者: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
按此在新窗口浏览图片

如图所示,假设当前时间是方框后面那根K线,那么前面重合的K线数量就是6根K线

[此贴子已经被作者于2015/11/27 22:50:09编辑过]

--  作者:zyghost119
--  发布时间:2015/11/29 10:37:09
--  

另外还有一个问题,就是取日线高低点的问题,在小周期上取得的日线高低数据和日线级别取得的高低点数据不一致。如下图所示。应该是因为小周期上把当天日盘和当天夜盘的时间当作一天了,而不是按照交易日计算的,这个问题怎么解决,请指点一下。


图片点击可在新窗口打开查看此主题相关图片如下:图例2.jpg
图片点击可在新窗口打开查看


--  作者:yukizzc
--  发布时间:2015/11/30 10:36:16
--  

LOD2可以看下这个函数例子,建立一个数组直接可以取出数组最大或最小值。

42、为什么我看日线上的最高价在1分或者5分钟图上找不到?总比日线最高价低几个价位
       :金字塔的日线生成是使用的交易所当日给出的开高低收报价,而分钟K线是使用当日分笔数据生成,对于国内期货分笔数据是交易所每隔0.5秒一次的快照数据,在行情变化剧烈时,这0.5秒会撮合很多笔交易,但是交易所只给了间隔0.5秒的快照,也就是传递过来的分笔数据不是所有成交报价的。故在极端位置会出现分钟线与日线有不一致的情况


--  作者:zyghost119
--  发布时间:2015/11/30 11:31:25
--  
不是数据误差的问题,改成金字塔时区数据是对的。
--  作者:yukizzc
--  发布时间:2015/11/30 12:58:37
--  
哦你这个用todaybar这种计算的是吧。,这个必须用金字塔时区,北京时区下本来就不对
--  作者: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编辑过]

--  作者:zyghost119
--  发布时间:2015/11/30 14:18:27
--  
以下是引用zyghost119在2015/11/27 22:48:36的发言:

 


图片点击可在新窗口打开查看此主题相关图片如下:图例.jpg
图片点击可在新窗口打开查看

比如这个图,最后一根K线之前目测是有5根K线重合。再往前回溯,就是其他K线的重合的,和当前这5根K线的重合不在一个区域。

[此贴子已经被作者于2015/11/27 22:50:09编辑过]


--  作者:zyghost119
--  发布时间:2015/11/30 14:23:56
--  

重新发个图吧。


图片点击可在新窗口打开查看此主题相关图片如下:图例3.jpg
图片点击可在新窗口打开查看
这个就是按照我的思路往前回溯,手动画出来的框,也许不准确,不过已经反映了我的意图。


--  作者: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);


--  作者:zyghost119
--  发布时间:2015/11/30 15:58:18
--  
晚上回去试试看。办公室的电脑没金字塔软件。