以文本方式查看主题
- 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp)
-- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4)
---- [求助]想用数组提取高点和低点未实现 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=147725)
|
-- 作者:NaturalLaw
-- 发布时间:2017/2/14 8:57:08
-- [求助]想用数组提取高点和低点未实现
应该是找出想找的高点和低点,但是设置成图表只显示60根K线时,找出的高点和低点分别都是60个,显然是不对的,请问错在哪里????谢谢帮助
此主题相关图片如下:1.png

此主题相关图片如下:2.png

RUNMODE:1;
VARIABLE:短期高点数组[] = 0; VARIABLE:短期低点数组[] = 0;
IF DATACOUNT > 3 THEN BEGIN FOR i = 3 TO DATACOUNT DO BEGIN IF REF(HIGH,i) <= REF(HIGH,i-1) AND REF(HIGH,i-1) >= REF(HIGH,i-2) THEN BEGIN 短期高点 := REF(HIGH,i-1); END
IF REF(LOW,i) >= REF(LOW,i-1) AND REF(LOW,i-1) <= REF(LOW,i-2) THEN BEGIN 短期低点 := REF(LOW,i-1); END END END
短期高点数组:=短期高点; 短期低点数组:=短期低点; 短期高点个数:UBOUND(短期高点数组),NODRAW; 短期低点个数:UBOUND(短期低点数组),NODRAW;
|
-- 作者:NaturalLaw
-- 发布时间:2017/2/14 8:58:04
--
此主题相关图片如下:3.png

|
-- 作者:jinzhe
-- 发布时间:2017/2/14 9:07:50
--
这段代码的思路是什么?
|
-- 作者:NaturalLaw
-- 发布时间:2017/2/14 9:15:15
--
RUNMODE:1; VARIABLE:短期高点数组[] = 0; VARIABLE:短期低点数组[] = 0; IF DATACOUNT > 3 THEN //当数据大于3根的时候执行以下代码 BEGIN FOR i = 3 TO DATACOUNT DO //从第三根K线开始做循环 BEGIN IF REF(HIGH,i) <= REF(HIGH,i-1) AND REF(HIGH,i-1) >= REF(HIGH,i-2) THEN //如果中间的K线的高点大于等于左右相邻的K线的高点 BEGIN 短期高点 := REF(HIGH,i-1);//则为短期高点 END IF REF(LOW,i) >= REF(LOW,i-1) AND REF(LOW,i-1) <= REF(LOW,i-2) THEN//如果中间的K线的低点小于等于左右相邻的K线的低点 BEGIN 短期低点 := REF(LOW,i-1);//则为短期低点 END END END 短期高点数组:=短期高点;//将短期高点赋值给数组 短期低点数组:=短期低点;//将短期低点赋值给数组 短期高点个数:UBOUND(短期高点数组),NODRAW;//判断短期高点的数量 短期低点个数:UBOUND(短期低点数组),NODRAW;//判断短期低点的数量
|
-- 作者:jinzhe
-- 发布时间:2017/2/14 9:25:50
--
一个简单的算法:
l3:count(ref(l,1)=llv(l,3),60);
h3:count(ref(h,1)=hhv(h,3),60);
|
-- 作者:NaturalLaw
-- 发布时间:2017/2/14 9:45:24
--
我是想要把找到的高点和低点写入数组
只想实现这个,您的代码没有帮助我实现,请再指导一下吧——如何把找到的高点和低点写入数组,请别偏离这个主题
|
-- 作者:jinzhe
-- 发布时间:2017/2/14 10:14:15
--
RUNMODE:1; n:=datacount; VARIABLE:短期高点数组[n] = 0; VARIABLE:短期低点数组[n] = 0;
IF DATACOUNT > 3 THEN //当数据大于3根的时候执行以下代码 BEGIN FOR i = 3 TO n DO //从第三根K线开始做循环 BEGIN IF HIGH[i] <= h[i-1] AND h[i-1] >= h[i-2] THEN //如果中间的K线的高点大于等于左右相邻的K线的高点 BEGIN 短期高点数组[i]:=h[i-1];//则为短期高点 END
IF l[i] >= l[i-1] AND l[i-1] <= l[i-2] THEN//如果中间的K线的低点小于等于左右相邻的K线的低点 BEGIN 短期低点数组[i]:=l[i-1];//则为短期低点 END END END for i=1 to n do begin if 短期高点数组[i]=0 then removebound(短期高点数组,i); if 短期低点数组[i]=0 then removebound(短期低点数组,i); end
短期高点个数:UBOUND(短期高点数组),NODRAW;//判断短期高点的数量 短期低点个数:UBOUND(短期低点数组),NODRAW;//判断短期低点的数量
|
-- 作者:NaturalLaw
-- 发布时间:2017/2/14 10:28:36
--
谢谢大师,非常感谢
|
-- 作者:客人
-- 发布时间:2017/2/14 11:03:01
--
还是不对,最后一行代码验证:"最近的高点:短期高点数组[短期高点个数-1],NODRAW;",显示数据为零?
RUNMODE:1; n:=DATACOUNT; VARIABLE:短期高点数组[n] = 0; VARIABLE:短期低点数组[n] = 0;
IF n > 3 THEN //当数据大于3根的时候执行以下代码 BEGIN
FOR i = 3 TO n DO //从第三根K线开始做循环
BEGIN
IF H[i] <= H[i-1] AND H[i-1] >= H[i-2] THEN //如果中间的K线的高点大于等于左右相邻的K线的高点
BEGIN
短期高点数组[i]:=H[i-1];//则为短期高点
END
IF L[i] >= L[i-1] AND L[i-1] <= L[i-2] THEN//如果中间的K线的低点小于等于左右相邻的K线的低点
BEGIN
短期低点数组[i]:=l[i-1];//则为短期低点
END
END END
FOR i=1 TO n DO BEGIN IF 短期高点数组[i]=0 THEN REMOVEBOUND(短期高点数组,i); IF 短期低点数组[i]=0 THEN REMOVEBOUND(短期低点数组,i); end
短期高点个数:UBOUND(短期高点数组),NODRAW;//判断短期高点的数量 短期低点个数:UBOUND(短期低点数组),NODRAW;//判断短期低点的数量
最近的高点:短期高点数组[短期高点个数-1],NODRAW;
|
-- 作者:NaturalLaw
-- 发布时间:2017/2/14 11:07:05
--
最近的高点:短期高点数组[短期高点个数],NODRAW;//这样写有数据是最近的高点值最近的高点:短期高点数组[短期高点个数-1],NODRAW;//这样写也有数据单数据为 0,显然离当前第二近的符合条件要求的数据没有被写进数组 恳请老师继续关注帮助修改,谢谢
[此贴子已经被作者于2017-2-14 11:08:45编辑过]
|