设为首页收藏本站

 找回密码
 注册
查看: 3565|回复: 3
打印 上一主题 下一主题

请教关于CLoseD和OpenD函数的问题 [复制链接]

Rank: 2

精华
0
UID
71495
积分
103
帖子
11
主题
7
阅读权限
30
注册时间
2011-10-14
最后登录
2015-1-11
跳转到指定楼层
1#
发表于 2011-11-10 10:09:15 |只看该作者 |倒序浏览
最近刚开始对程序化交易感兴趣。昨天研究了一下CloseD和OpenD函数。
这两个函数应该是用于跨周期调用的,日线周期用Close和Open进行回溯就可以了。
现在我在5分钟周期上调用该函数,简单写个公式应用,调用并且输出。
我发现,对于CloseD(0),会取出当前bar的收盘价,这没问题。对于CloseD(1),按道理应该取出头一天的日线收盘价,但是对于在K线图上靠前的bar,输出是有问题的。K线图的默认是300根K线,第一根K线通常不是某天的第一根。比如现在K线图上,实际上包括11月2日-11月9日的5分钟K线,11月2日的数据并不完整。那么取CloseD(1),对于11月2日的5分钟Bar,应该得出N/A的结果,现在得到的是11月2日第一根Bar的收盘价。
对于OpenD,存在类似问题。由于取得是开盘价,那么当5分钟周期上的数据并不完整时,OpenD(0),取得是第一根Bar的开盘价,而不是当天的开盘价。
总之,对于超级图表上第一天不完整的数据,会无法取出正确的价格。后面的数据完整了,取出的开盘价和收盘价就正确了。
看了看程序,程序的设定就是如此。不太懂为什么?是因为无法判断某日的数据是否完整么?照理说,如果可以判断,则对这部分数据,可以不去取价格啊。请高手指教。

Rank: 10Rank: 10Rank: 10

精华
2
UID
4130
积分
20906
帖子
6519
主题
17
阅读权限
200
注册时间
2009-4-15
最后登录
2019-4-12
2#
发表于 2011-11-10 10:36:31 |只看该作者
回复 1# mimix


这两个函数在用户函数中有所有源代码的,可以参考看看。

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
3#
发表于 2011-11-10 10:40:43 |只看该作者
回复 1# mimix

有关此问题可以看到一下公式升级说明,
5、Bar数据和序列变量在回溯越界时取值调整:【new】
     旧版本中,Bar数据和序列变量,序列参数等值,当回溯的索引越界是,即Value[nOffset]的nOffset > CurrentBar时,会是无效值。
     新版本中,这种情况下会用该数据源的第1个值代替。

http://www.tradeblazer.net/forum/thread-12695-1-1.html

使用道具 举报

Rank: 2

精华
0
UID
71495
积分
103
帖子
11
主题
7
阅读权限
30
注册时间
2011-10-14
最后登录
2015-1-11
4#
发表于 2011-11-10 15:22:55 |只看该作者
仔细看了看,确实小米说的,回溯越界后的取值调整,造成了这个现象。 为什么要这么做呢?这样会导致你想取到的和实际取到的不一样。为什么要用第一个值代替无效值,我不理解。我还没有尝试编交易策略,如果这些函数取到的值有不对的,那历史测试针对这些数据,也应该是不准确的(虽然好像只是k线图的前面一些数据有问题)。盼解惑!
自由王国的路

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-19 21:36

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部