设为首页收藏本站

 找回密码
 注册
楼主: 追涨杀跌
打印 上一主题 下一主题

跨周期数据转换函数以及跨周期技术指标调用的实现 [复制链接]

Rank: 1

精华
0
UID
199336
积分
48
帖子
26
主题
12
阅读权限
10
注册时间
2014-12-16
最后登录
2018-11-12
261#
发表于 2015-8-23 09:49:00 |只看该作者
请教高手,为什么下面这段代码我编译通不过,老是提示数据类型错误,有谁可以帮我,非常感谢..........
Params
        Numeric TimeFrame(1440);   
        // 目标时间周期:月线=40320,周线=10080,日线=1440,4小时线=240
        // 其他1小时内的周期等于相应的分钟数,如:1小时=60, 30分钟=30。。。
        // 支持不规则分钟数,如3分钟,8分钟,之类都行
        
        Numeric BarsBack(1);
        // 目标时间周期BAR偏移:
        // 1--表示将目标时间周期下的前1根K线数据作为与当前Bar对应的目标时间周期下的K线数据
        // 0--表示将目标时间周期下的截止到目前为止的数据转换为与当前BAR对应的目标时间周期下K线数据
        
        NumericRef oCurBar;                 // 目标时间周期下的Bar索引
        NumericRef oOPenHT;         // 目标时间周期下的开盘价
        NumericRef oHighHT;         // 目标时间周期下的最高价
        NumericRef oLowHT;          // 目标时间周期下的最低价
        NumericRef oCloseHT;        // 目标时间周期下的收盘价
        NumericRef oVolHT;          // 目标时间周期下的成交量
        NumericRef oOpenIntHT;      // 目标时间周期下的持仓量

Vars
        NumericSeries barCnt;
        NumericSeries CurBar;
        NumericSeries barCntSum;
        NumericSeries OpenHT;
        NumericSeries HighHT;
        NumericSeries LowHT;
        NumericSeries CloseHT;
        NumericSeries VolHT;
        NumericSeries OpenIntHT;
        Numeric CurTime;
        Numeric PreTime;
        bool condition(false);
        Numeric i;
Begin
        If (TimeFrame == 40320)                 // 月线
        {
                CurTime = Month;
                PreTime = Month[1];
        }
        Else If (TimeFrame == 10080)                        // 周线
        {
                CurTime = IntPart(DateDiff(19700105,Date)/7);
                PreTime = IntPart(DateDiff(19700105,Date[1])/7);
        }
        Else                                                                        // 其他时间周期
        {
                CurTime = IntPart((DateDiff(19700105,date)*1440 + Hour*60 + Minute)/TimeFrame);
                PreTime = IntPart((DateDiff(19700105,date[1])*1440 + Hour[1]*60 + Minute[1])/TimeFrame);
        }
        condition = CurTime != PreTime;

        If (CurrentBar==0)                // 如果是第一根Bar, CurBar=0
        {
                barCnt = 0;
                CurBar = 0;
                OpenHT = Open;
                HighHT = High;
                LowHT = Low;
                CloseHT = Close;
                VolHT = Vol;
                OpenIntHT = OpenInt;
        }
        Else
        {
                If(Condition)               
                // 如果在目标周期下,属于另一根K线,则CurBar加1
                {
                        barCnt = 1;
                        CurBar = CurBar[1] + 1;
                        OpenHT = Open;
                        HighHT = High;
                        LowHT = Low;
                        VolHT = Vol;
                }Else
                // 如果在目标周期下,属于同一根K线,则CurBar不变,但最高价和最低价要记录价格的变化,成交量要累加
                {
                        barCnt = barCnt[1] + 1;
                        CurBar = CurBar[1];
                        OpenHT = OpenHT[1];
                        HighHT = Max(HighHT[1],High);
                        LowHT = Min(LowHT[1],Low);
                        VolHT = VolHT[1] + Vol;
                }
                // 收盘价和持仓量总是取最新值
                CloseHT = Close;
                OpenIntHT = OpenInt;
        }
        
        // 上面的程序,在每根小周期的K线上,记录了它所属的大时间周期下的开高低收等值的变化。
        // 接下来,要把在大的时间周期级别上,属于同一根K线的开高低收这些数据,记录在这一组小周期K线的最后一根上。
        barCntSum = barCnt ;
        If(BarsBack == 0)
        // 如果Bar偏移参数为0,则取每根小周期K线上保留的大时间周期截止到这根小周期K线为止的BAR数据
        {
                barCntSum = 0 ;
        }Else If(BarsBack == 1)
        // 如果Bar偏移参数为1,则取大时间周期的上一根K线的BAr数据
        {
                barCntSum = barCnt ;
        }Else
        // 如果BAR偏移参数为其他,则取大时间周期的指定偏移后的那根K线的BAR数据
        {
                For i = 2 To BarsBack
                {
                        barCntSum = barCntSum + barCnt[barCntSum];
                }
        }

        // 最后将相应的K线数据作为引用参数返回
        oCurBar = CurBar;
        oOpenHT = OpenHT[barCntSum];
        oHighHT = HighHT[barCntSum];
        oLowHT = LowHT[barCntSum];
        oCloseHT = CloseHT[barCntSum];
        oVolHT = VolHT[barCntSum];
        oOpenIntHT = OpenIntHT[barCntSum];
        Return barCnt;
End

使用道具 举报

Rank: 2

精华
0
UID
211882
积分
56
帖子
35
主题
14
阅读权限
30
注册时间
2015-6-24
最后登录
2017-1-20
262#
发表于 2015-8-27 16:08:23 |只看该作者
michaelqianzhj 发表于 2015-8-23 09:49
请教高手,为什么下面这段代码我编译通不过,老是提示数据类型错误,有谁可以帮我,非常感谢..........
Par ...

用户函数的类型选择Numeric类型的

使用道具 举报

Rank: 1

精华
0
UID
216728
积分
4
帖子
4
主题
0
阅读权限
10
注册时间
2015-8-11
最后登录
2016-3-14
263#
发表于 2015-9-18 17:06:46 |只看该作者
MtMacd 函数中有点错误的,定义的是 NumericSeries mtCurBar;(第一个字母小写),用的时候是 if (MtCurBar == 0 )(第一个字母变成了大些),导致小周期上算出来的大周期的macd值是错误的。要修正一下。

使用道具 举报

Rank: 1

精华
0
UID
136066
积分
1
帖子
1
主题
0
阅读权限
10
注册时间
2013-6-26
最后登录
2015-10-14
264#
发表于 2015-10-8 22:24:13 |只看该作者
搂主:
您的MtBar函数有个问题,是使用1440作为参数表示“日线”,但是此日线非正常的日线,因为您的算法是以24:00作为分割的,但是事实上现在的期货日线是以夜盘开始前作为分割的,请问您是否能够修改是日线成为真正意义上的日线?
谢谢!

使用道具 举报

Rank: 1

精华
0
UID
220227
积分
11
帖子
9
主题
0
阅读权限
10
注册时间
2015-9-21
最后登录
2015-11-29
265#
发表于 2015-10-19 15:51:06 |只看该作者
严重关注此贴

使用道具 举报

Rank: 1

精华
0
UID
218696
积分
2
帖子
2
主题
0
阅读权限
10
注册时间
2015-9-1
最后登录
2015-12-4
266#
发表于 2015-12-2 15:25:44 |只看该作者
真是高手啊。。。多谢分享

请问:帖子里是以5分钟线作为小周期的,如果想改成1分钟线作为小周期,该怎么办呢?

使用道具 举报

Rank: 1

精华
0
UID
218696
积分
2
帖子
2
主题
0
阅读权限
10
注册时间
2015-9-1
最后登录
2015-12-4
267#
发表于 2015-12-4 10:53:47 |只看该作者
追涨杀跌 发表于 2011-6-13 01:57
编译好上面的MtMacd函数后,以后就可以随时通过调用这个函数来显示跨周期的MACD指标,以及在小周期上根据大 ...

请教大神,

在关于MACD的程序里,即第一页最后一贴中第29-36行中,好像是以当前BAR作为信息判断,然后以当前BAR的开盘价进行交易的,这是否会产生交易错误呢?

期待正解,谢谢。

使用道具 举报

Rank: 1

精华
0
UID
210852
积分
22
帖子
18
主题
4
阅读权限
10
注册时间
2015-6-9
最后登录
2023-11-29
268#
发表于 2015-12-16 18:44:52 |只看该作者
Fishing 发表于 2015-12-4 10:53
请教大神,

在关于MACD的程序里,即第一页最后一贴中第29-36行中,好像是以当前BAR作为信息判断,然后以 ...

你看mtmacd调用的函数mtbar中的第二个参数已经设置成了1,根据mtbar的构造原理,已经代表了上一个周期了

使用道具 举报

Rank: 1

精华
0
UID
15742
积分
30
帖子
12
主题
6
阅读权限
10
注册时间
2010-9-6
最后登录
2016-6-8
269#
发表于 2016-1-10 21:27:20 |只看该作者
太强大了,受益匪浅啊,谢谢高手无私分享

使用道具 举报

Rank: 1

精华
0
UID
217321
积分
13
帖子
9
主题
3
阅读权限
10
注册时间
2015-8-18
最后登录
2019-10-9
270#
发表于 2016-2-25 16:45:59 |只看该作者
好好学习一下这个

使用道具 举报

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

bottom

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

GMT+8, 2024-5-6 06:35

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部