设为首页收藏本站

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

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

Rank: 1

精华
0
UID
114812
积分
2
帖子
2
主题
0
阅读权限
10
注册时间
2013-1-11
最后登录
2013-2-5
171#
发表于 2013-1-13 21:01:58 |只看该作者
追涨杀跌老师:
这里谈到了很多的跨周期指标的引用问题,给了我们初学者很好的启示和点拨;但是对于标准差和布林通道的跨周期问题,一时还不知道如何下手。如何在1分钟图表里引用3分钟布林通道数值?在3分钟图表里能不能做到可以引用5分钟布林通道数值?

卡壳十多天了,无解药哇!

使用道具 举报

Rank: 2

精华
0
UID
111878
积分
96
帖子
46
主题
12
阅读权限
30
注册时间
2012-8-4
最后登录
2013-3-22
172#
发表于 2013-1-18 16:05:56 |只看该作者
追涨杀跌您好,使用MtBar函数做原型,修改为mtbar1函数,希望转换data1的数据,和mtbar配合做套利用。但是在mtbar函数里面添加data1.后编译无法通过,反馈return语句返回值类型与公式定义的返回值不符?求救

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 = Data1.Month;
                PreTime = Data1.Month[1];
        }
        Else If (TimeFrame == 10080)                        // 周线
        {
                CurTime = IntPart(DateDiff(19700105,Data1.Date)/7);
                PreTime = IntPart(DateDiff(19700105,Data1.Date[1])/7);
        }
        Else                                                                        // 其他时间周期
        {
                CurTime = IntPart((DateDiff(19700105,Data1.date)*1440 + Data1.Hour*60 + Data1.Minute)/TimeFrame);
                PreTime = IntPart((DateDiff(19700105,Data1.date[1])*1440 + Data1.Hour[1]*60 + Data1.Minute[1])/TimeFrame);
        }
        condition = CurTime != PreTime;//1分钟转化得到的bar索引和当前时间周期的不同?

        If (Data1.CurrentBar==0)                // 如果是第一根Bar, CurBar=0
        {
                barCnt = 0;
                CurBar = 0;
                OpenHT = Data1.Open;
                HighHT = Data1.High;
                LowHT = Data1.Low;
                CloseHT = Data1.Close;
                VolHT = Data1.Vol;
                OpenIntHT = Data1.OpenInt;
        }
        Else
        {
                If(Condition)               
                // 如果在目标周期下,属于另一根K线,则CurBar加1,
                {
                        barCnt = 1;
                        CurBar = CurBar[1] + 1;//1分钟转化过来的的周期慢了一个bar?
                        OpenHT = Data1.Open;
                        HighHT = Data1.High;
                        LowHT = Data1.Low;
                        VolHT = Data1.Vol;
                }Else
                // 如果在目标周期下,属于同一根K线,则CurBar不变,但最高价和最低价要记录价格的变化,成交量要累加
                {
                        barCnt = barCnt[1] + 1;//累计小时间周期的bar数量?
                        CurBar = CurBar[1];
                        OpenHT = OpenHT[1];
                        HighHT = Max(HighHT[1],Data1.High);
                        LowHT = Min(LowHT[1],Data1.Low);
                        VolHT = VolHT[1] + Data1.Vol;
                }
                // 收盘价和持仓量总是取最新值
                CloseHT = Data1.Close;
                OpenIntHT = Data1.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
111878
积分
96
帖子
46
主题
12
阅读权限
30
注册时间
2012-8-4
最后登录
2013-3-22
173#
发表于 2013-1-18 16:07:34 |只看该作者
贴图附上

使用道具 举报

Rank: 2

精华
0
UID
1085
积分
116
帖子
25
主题
2
阅读权限
30
注册时间
2008-1-17
最后登录
2020-7-1
174#
发表于 2013-1-30 23:02:37 |只看该作者
留个脚印

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
5940
积分
1179
帖子
285
主题
28
阅读权限
60
注册时间
2009-11-21
最后登录
2015-1-19
175#
发表于 2013-2-27 15:29:50 |只看该作者
好帖。 顶

使用道具 举报

Rank: 1

精华
0
UID
114410
积分
29
帖子
7
主题
2
阅读权限
10
注册时间
2012-12-26
最后登录
2013-4-16
176#
发表于 2013-3-7 16:41:13 |只看该作者
老师,你好,我根据你写的小周期数据换成大周期数据测试了下,编译不通过啊。
  Return barCnt;

显示 Return 语句的返回类型与公式定义的返回类型值类型不符。
请教下,是什么问题啊。
函数的返回值类型为数值型,在模板选择时,选“数值型”

使用道具 举报

Rank: 2

精华
0
UID
113294
积分
100
帖子
63
主题
12
阅读权限
30
注册时间
2012-11-3
最后登录
2023-9-11
177#
发表于 2013-3-11 09:12:14 |只看该作者

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
87709
积分
222
帖子
112
主题
27
阅读权限
40
注册时间
2011-12-20
最后登录
2015-7-23
178#
发表于 2013-3-12 12:30:40 |只看该作者
追涨杀跌 发表于 2011-6-8 17:51
现在可以举个例子来说明,怎么用上面的几个函数来做交易策略了。假如我们的策略如下:
1、我们以日线的均线 ...

太好了,不过我想问一下,这个直接用的话,是可以应用于任何小周期对大周期的调用么?还是只能是1分钟调用其他周期?我建好用户函数后,直接引用用户函数,能实现3分钟调用5分钟数据么?因为3分钟K线和5分钟的k线不能很好对应,这样调用准确么?

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
6249
积分
227
帖子
81
主题
30
阅读权限
40
注册时间
2009-12-23
最后登录
2021-1-15
179#
发表于 2013-3-13 15:19:46 |只看该作者
追涨杀跌 老师好久没有来这里了,呼唤~~

使用道具 举报

Rank: 1

精华
0
UID
116571
积分
20
帖子
4
主题
0
阅读权限
10
注册时间
2013-3-8
最后登录
2017-10-22
180#
发表于 2013-3-14 10:44:44 |只看该作者
追涨杀跌 发表于 2011-6-8 17:51
现在可以举个例子来说明,怎么用上面的几个函数来做交易策略了。假如我们的策略如下:
1、我们以日线的均线 ...

慢慢学习中 谢谢

使用道具 举报

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

bottom

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

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

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部