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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → hhvbars如何取得n个周期之前的m个周期内的最高值的位置?

   

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


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

主题:hhvbars如何取得n个周期之前的m个周期内的最高值的位置?

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


加好友 发短信
等级:新手上路 帖子:82 积分:0 威望:0 精华:0 注册:2020/9/21 10:56:16
hhvbars如何取得n个周期之前的m个周期内的最高值的位置?  发帖心情 Post By:2021/2/15 22:57:52    Post IP:123.118.75.19[只看该作者]


如果直接写hhvbars(close,90),取得的是从当前起算的前90天内的close最高值的位置。我想取得10天前起算的90个周期的close最高值的位置,但不是当前起算的100个周期内的最高值的位置,该如何用hhvbars实现?


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


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2021/2/17 11:43:26    Post IP:101.80.168.63[只看该作者]

ref(hhvbars(close,90),10)

 

外面套一个ref取前面的数据就行了


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


加好友 发短信
等级:新手上路 帖子:82 积分:0 威望:0 精华:0 注册:2020/9/21 10:56:16
  发帖心情 Post By:2021/2/19 10:07:45    Post IP:114.249.133.15[只看该作者]

如果用同理获取hhvbars的位置该怎么写?ref(hhvbars(close,90),10)似乎得出的结果不对

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/2/19 10:26:19    Post IP:58.246.57.26[只看该作者]

 这个获取到的值还要再加上你ref偏移的长度才是 这个90周期最高价位置 距离现在的位置。因为你ref获取的值不是基于当前位置的。ref(hhvbars(close,90),10)+10


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
popypopy
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:82 积分:0 威望:0 精华:0 注册:2020/9/21 10:56:16
  发帖心情 Post By:2021/2/19 16:55:03    Post IP:111.200.53.18[只看该作者]

我遇到一个奇怪的问题,我在5均线死叉21均线的位置显示当前位置往前6个周期起算36天内50天均线的最高值,
在图表上我按照上述方法取到的hhv值是对的,但是在后台精细化历史测评中debugfile取到的hhv值却不对,但hhvbars的数值在图表上和debugfile里都是对的。

代码如下:
MA21:=MA(close,21);
MA5:=MA(close,5);
MA50:=MA(close,50);
drawtext(cross(MA21,MA5),high,'5死叉21  hhv: '&NUMTOSTR(ref(hhv(MA50,36),6),3) &'  hhvbars:'&NUMTOSTR(ref(hhvbars(MA50,36),6)+6,0),colorgreen);

if cross(MA21,MA5) then begin
str:=' 5死叉21  hhv: '&NUMTOSTR(ref(hhv(MA50,36),6),3) &'  hhvbars:'&NUMTOSTR(ref(hhvbars(MA50,36),6)+6,0);
DEBUGFILE('C:\log.txt',str,0); 
end


以节能国祯(300388)2020年7月28日的5均线死叉21均线为例,图表上显示 hhv是10.382;但在debugfile里显示的hhv是 9.623;两者的hhvbars都是一致的,都是41
debugfile里输出的结果:“5死叉21  hhv: 9.623  hhvbars:41”
图表显示结果截图如下,见红圈标注

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



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


加好友 发短信
等级:新手上路 帖子:82 积分:0 威望:0 精华:0 注册:2020/9/21 10:56:16
  发帖心情 Post By:2021/2/19 17:03:18    Post IP:111.200.53.18[只看该作者]

我排查后发现是因为我选取的精细化历史测评的周期是2020年5月7日至12月7日,这个周期导致7月28日往前41个周期的MA50没有取到正确的值。这个问题会导致图表测试和后台精细化测评得到的结果不一致,从而影响后台精细化测评的实际结论。
虽然我可以把精细化历史测评的周期提前到2020年3月从而把7月28号的这个错误结果避免掉。但问题是,将测评起始时间提前到3月份之后,也会有靠近3月份的MA50的取值不对,导致产生新的测评结论不准确的问题。

这个问题能否解决?

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/2/19 17:34:31    Post IP:58.246.57.26[只看该作者]

你这个问题在图表上也会有的,图表上靠近历史方向的ma也会因为数据不足从而无法产生有效数据的。这个无法规避的。你如果要对比后台 图表,首先涉及纯指标的计算的部分 要设置好起始时间才能保住均线计算是一致的。

后台

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

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

然后你可以对交易代码做一个限制,在BARPOS大于指定数值之后 才运行交易。这样可以规避掉ma无法计算的部分了。
不过图表后台实际运行和回测 机制上都有差异,你如果要完全回测结果一致,那可能要额外做很多工作才行。可能要做一些单独针对回测的修改才行。



命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
popypopy
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:82 积分:0 威望:0 精华:0 注册:2020/9/21 10:56:16
  发帖心情 Post By:2021/2/19 17:52:07    Post IP:111.200.53.18[只看该作者]

明白了,多谢多谢??

 回到顶部