设为首页收藏本站

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

跨周期问题 [复制链接]

Rank: 5Rank: 5

精华
0
UID
7277
积分
938
帖子
207
主题
44
阅读权限
60
注册时间
2010-3-11
最后登录
2016-5-4
跳转到指定楼层
1#
发表于 2011-10-19 12:54:43 |只看该作者 |倒序浏览
能不能写一个15分钟跨周期取30分钟和60分钟MA的例子?老大写的几个我都看了,实在是不知道要怎么写

Rank: 5Rank: 5

精华
0
UID
7277
积分
938
帖子
207
主题
44
阅读权限
60
注册时间
2010-3-11
最后登录
2016-5-4
2#
发表于 2011-10-19 13:53:08 |只看该作者
老大?????

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
7277
积分
938
帖子
207
主题
44
阅读权限
60
注册时间
2010-3-11
最后登录
2016-5-4
3#
发表于 2011-10-19 14:19:50 |只看该作者

这个是TransMinsData30

本帖最后由 01011012 于 2011-10-19 14:20 编辑

Params
        NumericSeries Price(1);
        Numeric nMinSet(30);
        Numeric MinsAgo(0);
Vars
        NumericSeries barCnt;
        NumericSeries MinData;
        Numeric i;
        Numeric j;
        Numeric nIndex(0);
Begin
        If(IntPart(Minute%nMinSet)==0)
        {
                barCnt = 1;
        }Else
        {
                barCnt = barCnt[1] + 1;
        }
        MinData = Price;
               
        If(MinsAgo == 0)
        {
                return MinData;
        }Else
        {
                For i = 1 To MinsAgo
                {
                        If( i == 1)
                        {        
                                j = 0;
                        }Else
                        {
                                j = j + BarCnt[j];                                
                        }
                        If (j > CurrentBar ) Return InvalidNumeric;
                        nIndex = nIndex + BarCnt[j];
                }
                Return MinData[nIndex];
        }
End

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
7277
积分
938
帖子
207
主题
44
阅读权限
60
注册时间
2010-3-11
最后登录
2016-5-4
4#
发表于 2011-10-19 14:22:44 |只看该作者
//------------------------------------------------------------------------
// 简称: TransMinsData
// 名称: 1小时内跨周期
// 类别: 用户函数
// 类型: 用户函数
// 输出: 数值型
//参数1:要计算的数据源。参数2:想按N分钟来处理,本例是5分钟,不能大于60。参数3:希望取多少个N分钟前的数据
//------------------------------------------------------------------------
Params
        NumericSeries Price(1);
        Numeric nMinSet(60);
        Numeric MinsAgo(0);
Vars
        NumericSeries barCnt;
        NumericSeries MinData;
        Numeric i;
        Numeric j;
        Numeric nIndex(0);
Begin
        If(IntPart((Hour*60+Minute)%nMinSet)==0)        
        {
                barCnt = 1;
        }Else
        {
                barCnt = barCnt[1] + 1;
        }
        MinData = Price;
               
        If(MinsAgo == 0)
        {
                return MinData;
        }Else
        {
                For i = 1 To MinsAgo
                {
                        If( i == 1)
                        {        
                                j = 0;
                        }Else
                        {
                                j = j + BarCnt[j];                                
                        }
                        If (j > CurrentBar ) Return InvalidNumeric;
                        nIndex = nIndex + BarCnt[j];
                }
                Return MinData[nIndex];
        }
End

//------------------------------------------------------------------------
// 编译版本

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
7277
积分
938
帖子
207
主题
44
阅读权限
60
注册时间
2010-3-11
最后登录
2016-5-4
5#
发表于 2011-10-19 14:23:28 |只看该作者
Params
        Numeric Length(55);
Vars
        NumericSeries MyClose30;
        NumericSeries MyClose60;
                NumericSeries MA15;
                NumericSeries MA30;
                NumericSeries MA60;
        Numeric SumValue30(0);
                Numeric SumValue60(0);
        Numeric Value30;
                Numeric Value60;
        Numeric i;
Begin
        MyClose30 = DataConvert(Close,"min",30,"Close");
                MyClose60 = DataConvert(Close,"min",60,"Close");                      
        For i = Length-1 DownTo 0
        {
                Value30 = TransMinsData30(MyClose30,30,i);
                                Value60 = TransMinsData(MyClose60,60,i);
                SumValue30 = SumValue30 + Value30;
                                SumValue60 = SumValue60 + Value60;
        }
                ma60=SumValue60/Length;
                ma30=SumValue30/Length;
                ma15=AverageFC(Close,Length);
        PlotNumeric("my30",ma30);        
                PlotNumeric("ma15",ma15);
                PlotNumeric("MA60",MA60);
               
               

End

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
7277
积分
938
帖子
207
主题
44
阅读权限
60
注册时间
2010-3-11
最后登录
2016-5-4
6#
发表于 2011-10-19 14:24:21 |只看该作者
MA60的数据不对,错在哪里?

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
7277
积分
938
帖子
207
主题
44
阅读权限
60
注册时间
2010-3-11
最后登录
2016-5-4
7#
发表于 2011-10-19 14:27:15 |只看该作者
原因可能是因为60分钟周期里面有一根K线实际上只有半小时交易时间引起的,怎么解决?

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
2
UID
4130
积分
20901
帖子
6519
主题
17
阅读权限
200
注册时间
2009-4-15
最后登录
2019-4-12
8#
发表于 2011-10-19 17:45:47 |只看该作者
回复 7# 01011012


这里有现成的函数可以直接使用,请看http://tradeblazer.net/forum/thread-15184-1-1.html

使用道具 举报

Rank: 1

精华
0
UID
111137
积分
45
帖子
22
主题
2
阅读权限
10
注册时间
2012-6-22
最后登录
2012-7-8
9#
发表于 2012-6-27 10:32:24 |只看该作者
lh948 发表于 2011-10-19 17:45
回复 7# 01011012

楼上的那个程序不能实现吗?应该能实现吧!

使用道具 举报

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

bottom

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

GMT+8, 2024-5-3 21:30

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部