以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  hhvbars如何取得n个周期之前的m个周期内的最高值的位置?  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=184271)

--  作者:popypopy
--  发布时间:2021/2/15 22:57:52
--  hhvbars如何取得n个周期之前的m个周期内的最高值的位置?

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


--  作者:yukizzc
--  发布时间:2021/2/17 11:43:26
--  

ref(hhvbars(close,90),10)

 

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


--  作者:popypopy
--  发布时间:2021/2/19 10:07:45
--  
如果用同理获取hhvbars的位置该怎么写?ref(hhvbars(close,90),10)似乎得出的结果不对
--  作者:FireScript
--  发布时间:2021/2/19 10:26:19
--  
 这个获取到的值还要再加上你ref偏移的长度才是 这个90周期最高价位置 距离现在的位置。因为你ref获取的值不是基于当前位置的。ref(hhvbars(close,90),10)+10
--  作者:popypopy
--  发布时间:2021/2/19 16:55:03
--  
我遇到一个奇怪的问题,我在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
--  发布时间:2021/2/19 17:03:18
--  
我排查后发现是因为我选取的精细化历史测评的周期是2020年5月7日至12月7日,这个周期导致7月28日往前41个周期的MA50没有取到正确的值。这个问题会导致图表测试和后台精细化测评得到的结果不一致,从而影响后台精细化测评的实际结论。
虽然我可以把精细化历史测评的周期提前到2020年3月从而把7月28号的这个错误结果避免掉。但问题是,将测评起始时间提前到3月份之后,也会有靠近3月份的MA50的取值不对,导致产生新的测评结论不准确的问题。

这个问题能否解决?

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

后台

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

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

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


--  作者:popypopy
--  发布时间:2021/2/19 17:52:07
--  
明白了,多谢多谢??