- 精华
- 0
- 在线时间
- 3840 小时
- UID
- 20842
- 积分
- 931
- 帖子
- 382
- 阅读权限
- 255
- 注册时间
- 2010-12-3
- 最后登录
- 2022-2-15
- 精华
- 0
- UID
- 20842
- 积分
- 931
- 帖子
- 382
- 主题
- 2
- 阅读权限
- 255
- 注册时间
- 2010-12-3
- 最后登录
- 2022-2-15
|
本帖最后由 追涨杀跌 于 2011-12-26 14:17 编辑
TB的跨周期调用,以前已经有一些解决方案。但总体来说,使用还不够方便。以前的帖子中Nopain曾提出过一个算法,非常精巧。最近在这个算法的基础上, 把整个实现方法完善了一下。下面把总体思路和函数代码贴出来,请大家试用,也欢迎大家提出修改意见。
总体思路:
1、小周期调用大周期的数据;
2、具体方法是新编一个函数,用来根据小周期下的数据推算出大周期的BAR数据,为了省事,计算时,会将大周期下的开高低收以及成交量和持仓量等数据都算出来,然后将这些数据通过引用参数返回。当然有的朋友可能只需要一个收盘价就可以了,那样的话,可以自行修改这个函数,把多余的数据去掉;
3、返回的大周期数据将以序列变量的形式保留在对应的小周期K线上,以便以后调用;
4、另外为了便于大周期的数据计算出来后的回溯使用,函数会将小周期下当前BAR到大周期下的前一个BAR的最后一个小周期BAR需要回溯的BAR数目,作为函数的结果返回。这句话,不容易描述清楚,估计大家听起来也费力,但没关系,后面用例子来解释,知道这回事就行了。
5、另外还增加了一个返回值(也是通过引用参数返回),表示的是当前小周期K线对应的大周期K线在整个大周期中的索引值。举例来说,5分钟图,样本数300,那转换成30分钟周期图,总共应该是50根K线,那最新一根5分钟图对应的30分钟K线在整个30分钟图中的索引值就应该是49(类似CurrentBar 0-49);
好,其他先不废话,把代码贴出来,再举几个例子。
新建用户函数MtBar, 返回值为数值类型,代码如下: |
-
总评分: 威望 + 71
查看全部评分
|