设为首页收藏本站

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

跨周期情况下的均线计算。 [复制链接]

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
跳转到指定楼层
1#
发表于 2008-3-31 18:08:15 |只看该作者 |倒序浏览
使用环境:
基本数据源为1分钟,通过DataConvert可以转化为对应的5分钟数据,有些朋友希望能够在1分钟图里面取道5分钟的数据的均线,效果要和单独使用5分钟的均线一样。为此,提供以下函数。

1、新建一个用户函数,TransMinsData,返回值为数值型。
参数1:要计算的数据源。
参数2:想按N分钟来处理,本例是5分钟,不能大于60。
参数3:希望取多少个N分钟前的数据。
  1. Params
  2.         NumericSeries Price(1);
  3.         Numeric nMinSet(5);
  4.         Numeric MinsAgo(2);
  5. Vars
  6.         NumericSeries barCnt;
  7.         NumericSeries MinData;
  8.         Numeric i;
  9.         Numeric j;
  10.         Numeric nIndex(0);
  11. Begin
  12.         If(IntPart(Minute%nMinSet)==0)
  13.         {
  14.                 barCnt = 1;
  15.         }Else
  16.         {
  17.                 barCnt = barCnt[1] + 1;
  18.         }
  19.         MinData = Price;
  20.                
  21.         If(MinsAgo == 0)
  22.         {
  23.                 return MinData;
  24.         }Else
  25.         {
  26.                 For i = 1 To MinsAgo
  27.                 {
  28.                         If( i == 1)
  29.                         {       
  30.                                 j = 0;
  31.                         }Else
  32.                         {
  33.                                 j = j + BarCnt[j];                               
  34.                         }
  35.                         If (j > CurrentBar ) Return InvalidNumeric;
  36.                         nIndex = nIndex + BarCnt[j];
  37.                 }
  38.                 Return MinData[nIndex];
  39.         }
  40. End
复制代码
2、新建一个技术指标,用来举例说明如何使用该函数。
本例是取5分钟的均值((O+H+L+C)/4)的10周期移动平均。
  1. Params
  2.         Numeric Length(10);
  3. Vars
  4.         Numeric MyOpen;
  5.         Numeric MyHigh;
  6.         Numeric MyLow;
  7.         Numeric MyClose;
  8.         NumericSeries MyAvgPrice;
  9.        
  10.         Numeric SumValue(0);
  11.         Numeric Value1;
  12.         Numeric i;
  13. Begin
  14.         MyOpen = DataConvert(Open,"min",5,"Open");
  15.         MyHigh = DataConvert(High,"min",5,"High");
  16.         MyLow = DataConvert(Low,"min",5,"Low");
  17.         MyClose = DataConvert(Close,"min",5,"Close");
  18.         MyAvgPrice = (MyOpen+MyHigh+MyLow+MyClose)*0.25;
  19.        
  20.         For i = Length-1 DownTo 0
  21.         {
  22.                 Value1 = TransMinsData(MyAvgPrice,5,i);
  23.                 SumValue = SumValue + Value1;
  24.         }
  25.         PlotNumeric("AvgPrice",SumValue/Length);
  26. End
复制代码
已有 2 人评分威望 收起 理由
ruric173 + 1 很给力!
china_lizhi + 4 赞一个!

总评分: 威望 + 5   查看全部评分

Rank: 7Rank: 7Rank: 7

精华
1
UID
387
积分
2724
帖子
167
主题
33
阅读权限
80
注册时间
2007-9-21
最后登录
2020-2-24
2#
发表于 2008-3-31 22:47:12 |只看该作者

回复 #1 nopain 的帖子

求模运算符% 是指将两个数相除并只返回余数

     在整数的除法中,只有能整除与不能整除两种情况。当不能整除时,就产生余数
     2%5 不能整除,余数是2
     5%2 不能整除,余数是1
     4%2 可以整除,余数是0

[ 本帖最后由 yk1234 于 2008-3-31 22:49 编辑 ]

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
1
UID
387
积分
2724
帖子
167
主题
33
阅读权限
80
注册时间
2007-9-21
最后登录
2020-2-24
3#
发表于 2008-4-1 22:30:38 |只看该作者
指标已试
1.在时间除5余4的时间上已相等(14:34,14:39),
2.假设当前的时间14:32,能在14:30之前每5个BAR就重新定义一个新BAR,数据就取14:29,14:24,14:19,14:14BAR上的数值,在14:30---14:32也是一BAR.这些只用于计算,只要数据,不用画图,可行吗???

[ 本帖最后由 yk1234 于 2008-4-1 22:32 编辑 ]

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
4#
发表于 2008-4-2 08:54:01 |只看该作者
不行的。除非用未来数据。
前面已经通过算法实现了过滤前面4根Bar的数据啊,为什么还要这个?

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
1
UID
387
积分
2724
帖子
167
主题
33
阅读权限
80
注册时间
2007-9-21
最后登录
2020-2-24
5#
发表于 2008-4-2 08:59:43 |只看该作者
RU0807在调用指标还是有数据输出
AvgPrice = 22166
AvgPrice = 22166.13
AvgPrice = 22166.38
AvgPrice = 22170.88
AvgPrice = 22170.88          AvgPrice = 22170.88   11:14
AvgPrice = 22193.38
AvgPrice = 22192.88
AvgPrice = 22191.50
AvgPrice = 22190.13
AvgPrice = 22189.75          AvgPrice = 22189.75   11:19
AvgPrice = 22198.38
AvgPrice = 22198.38
AvgPrice = 22199.13
AvgPrice = 22199
AvgPrice = 22198.63          AvgPrice = 22198.63   11:24
AvgPrice = 22204.88
AvgPrice = 22205.88
AvgPrice = 22207.38
AvgPrice = 22207.25
AvgPrice = 22207.50          AvgPrice = 22207.50   11:29

[ 本帖最后由 yk1234 于 2008-4-2 12:47 编辑 ]

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
1
UID
387
积分
2724
帖子
167
主题
33
阅读权限
80
注册时间
2007-9-21
最后登录
2020-2-24
6#
发表于 2008-4-2 19:54:55 |只看该作者
五分钟周期的Highest(High,5)==High[2]在一分钟周期下该如何写呢?

以下这段程序很难,请解释,最好用文字标注.
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];
        }

[ 本帖最后由 yk1234 于 2008-4-3 07:26 编辑 ]

使用道具 举报

Rank: 2

精华
0
UID
1406
积分
98
帖子
19
主题
4
阅读权限
30
注册时间
2008-4-2
最后登录
2008-9-21
7#
发表于 2008-4-6 15:33:02 |只看该作者
我不能理解
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
8#
发表于 2008-4-6 19:02:58 |只看该作者
您上面的例子,应该执行i==1的分支。
即 j = 0;
nIndex = nIndex + BarCnt[0];
nIndex = 0 + 2;

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
9#
发表于 2008-4-6 19:03:42 |只看该作者
原帖由 yk1234 于 2008-4-2 19:54 发表
五分钟周期的Highest(High,5)==High[2]在一分钟周期下该如何写呢?

以下这段程序很难,请解释,最好用文字标注.
If(MinsAgo == 0)
        {
                return MinData;
        }Else
        {
               ...



这个程序是很难,一下说不清楚,您会使用就可以了。
不用关心细节的问题了

使用道具 举报

Rank: 2

精华
0
UID
1406
积分
98
帖子
19
主题
4
阅读权限
30
注册时间
2008-4-2
最后登录
2008-9-21
10#
发表于 2008-4-6 21:07:56 |只看该作者
nIndex = nIndex + BarCnt[j];    这是  i   还是   j    ?

使用道具 举报

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

bottom

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

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

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部