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


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

   

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


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

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

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


加好友 发短信
等级:论坛游民 帖子:108 积分:0 威望:0 精华:0 注册:2016/12/13 12:08:16
[求助]想用数组提取高点和低点未实现  发帖心情 Post By:2017/2/14 8:57:08    Post IP:60.31.255.238[只看该作者]

应该是找出想找的高点和低点,但是设置成图表只显示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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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


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

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


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

这段代码的思路是什么?


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

客户服务部

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

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

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


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

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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

一个简单的算法:

l3:count(ref(l,1)=llv(l,3),60);

h3:count(ref(h,1)=hhv(h,3),60);



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

客户服务部

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

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

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


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

我是想要把找到的高点和低点写入数组

只想实现这个,您的代码没有帮助我实现,请再指导一下吧——如何把找到的高点和低点写入数组,请别偏离这个主题


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


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

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;//判断短期低点的数量



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

客户服务部

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

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

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


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

谢谢大师,非常感谢

 回到顶部
客人(60.31.*.*)
  9楼


  发帖心情 Post By:2017/2/14 11:03:01    Post IP:60.31.255.238[只看该作者]

还是不对,最后一行代码验证:"最近的高点:短期高点数组[短期高点个数-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
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

最近的高点:短期高点数组[短期高点个数],NODRAW;//这样写有数据是最近的高点值
最近的高点:短期高点数组[短期高点个数-1],NODRAW;//这样写也有数据单数据为 0,显然离当前第二近的符合条件要求的数据没有被写进数组
恳请老师继续关注帮助修改,谢谢
[此贴子已经被作者于2017-2-14 11:08:45编辑过]

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