欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [求助]想用数组提取高点和低点未实现

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3969人关注过本帖树形打印复制链接

主题:[求助]想用数组提取高点和低点未实现

帅哥哟,离线,有人找我吗?
jinzhe
  21楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2017/2/14 16:41:36    Post IP:180.173.41.99[只看该作者]

removebound的思路错了,不应该从小到大的顺序删除数据的:删除数据后,后面的元素都向前进一位,导致没有判断过的元素进一位后不做判断了

举个例子:

数组前3个数为: 0 ,0 ,1。

那么第一次循环时,i为1----判断数组第一个元素是否为0-----判断为是-----remove掉了第一个0----删除后数组后面的元素进位,变为:0,1;

到了第二次循环时,i为2----判断数组第二个元素是否为0-----因为在第一次循环后,数组变成了:0,1 ,数组第二个元素是1-----结果导致判断不成立-----数组不变----数组里面保留了数值为0 的元素

 

所以我上面的修改是通过逆向思维,对数组元素从大到小的顺序删除数据,那么就不会产生这样的问题了。

 



金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
NaturalLaw
  22楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:108 积分:0 威望:0 精华:0 注册:2016/12/13 12:08:16
  发帖心情 Post By:2017/2/14 16:43:33    Post IP:60.31.255.238[只看该作者]

太棒了,大师,赞,谢谢

 回到顶部
帅哥哟,离线,有人找我吗?
NaturalLaw
  23楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:108 积分:0 威望:0 精华:0 注册:2016/12/13 12:08:16
  发帖心情 Post By:2017/2/14 17:30:34    Post IP:60.31.255.238[只看该作者]

jinzhe老师:
读了您注解,是不是我可以这样猜想:金字塔数组往里写数据的时候,写的是序时数据——意思对应着每一根K线都要往数组里写数据,即符合条件就写入数据、不符合条件就写入数据0来填充,所以最后需要removebound函数把填充的数据0删除掉?

 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  24楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2017/2/14 18:11:53    Post IP:180.173.193.42[只看该作者]

不是填充0,而是原来就是0。新建一个全部是0的数组,然后把满足的数据写入数组,最后删除0来实现需求


金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
NaturalLaw
  25楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:108 积分:0 威望:0 精华:0 注册:2016/12/13 12:08:16
  发帖心情 Post By:2017/2/15 8:54:13    Post IP:60.31.255.238[只看该作者]

这次彻底明白了,再次谢谢老师!金字塔的数组功能真棒!

 回到顶部
帅哥哟,离线,有人找我吗?
NaturalLaw
  26楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:108 积分:0 威望:0 精华:0 注册:2016/12/13 12:08:16
  发帖心情 Post By:2017/2/22 9:06:18    Post IP:60.31.255.238[只看该作者]

求助问题如下:
如下图,为什么n是数字5呢?datacount 的值 是统计内存里的K线根数,而不是数据总量?

图如下:

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

源代码如下:

RUNMODE:0;
n:DATACOUNT,NODRAW; 
VARIABLE:短期高点数组[n] = 0;
VARIABLE:短期低点数组[n] = 0;
IF n > 3 THEN //当数据大于3根的时候执行以下代码
BEGIN
FOR i = 3 TO n DO BEGIN //从第三根K线开始做循环
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=n downto 1 DO BEGIN
IF 短期高点数组[i]=0 THEN REMOVEBOUND(短期高点数组,i);
IF 短期低点数组[i]=0 THEN REMOVEBOUND(短期低点数组,i);
end
//以下为验证代码写的对不对
短期高点个数:=UBOUND(短期高点数组),NODRAW;//判断短期高点的数量
短期低点个数:=UBOUND(短期低点数组),NODRAW;//判断短期低点的数量
最近的高点:短期高点数组[短期高点个数],NODRAW;
次近的高点:短期高点数组[短期高点个数 - 1],NODRAW;
第三近的高点:短期高点数组[短期高点个数 - 2],NODRAW;
第四近的高点:短期高点数组[短期高点个数 - 3],NODRAW;

 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  27楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2017/2/22 9:24:14    Post IP:180.173.41.99[只看该作者]

我怎么看到N是500?


金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
NaturalLaw
  28楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:108 积分:0 威望:0 精华:0 注册:2016/12/13 12:08:16
  发帖心情 Post By:2017/2/22 10:20:04    Post IP:60.31.255.238[只看该作者]

是的,我看错了图片点击可在新窗口打开查看图片点击可在新窗口打开查看

 回到顶部
总数 28 上一页 1 2 3