设为首页收藏本站

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

如何在1分钟周期上取日线40日ATR值? [复制链接]

Rank: 3Rank: 3

精华
1
UID
2048
积分
218
帖子
29
主题
8
阅读权限
40
注册时间
2008-8-1
最后登录
2016-8-2
跳转到指定楼层
1#
发表于 2008-10-27 17:59:53 |只看该作者 |倒序浏览
如何在1分钟K线上取日K线40日ATR值呢?
请高手赐教!!!

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
2#
发表于 2008-10-28 10:24:38 |只看该作者
如果要实现这个系统,首先需要至少41天的分钟数据,大概10000多一点。

然后通过HighD(),LowD,CloseD等函数计算ATR,不能直接用Average进行计算,需要自行计算平均值。
理论上是可以实现的,但是还是比较复杂的,我觉得比较简单的方法就是每天开盘前,把ATR作为参数输入。

使用道具 举报

Rank: 3Rank: 3

精华
1
UID
2048
积分
218
帖子
29
主题
8
阅读权限
40
注册时间
2008-8-1
最后登录
2016-8-2
3#
发表于 2008-10-28 20:44:10 |只看该作者

感谢NOPAIN先生回复.

  感谢NOPAIN先生回复.
  我整理一下我的思路,您看看对不对.
  首先从大的思路来讲,
  一、先求昨ATR的函数,用到HighD\LowD\CloseD,
  二、求平均ATR的函数,与跨周期情况下的均线计算这个案例类似,用FOR i=Lentgh to 0来顺序抽取对应ATR值求出平均数!!
  不知道是不是以上这样!!

     求1分钟K线上取日K线40日ATR值主要是用来做历史测试,实盘不需要这样,直接算出值代入就行,不用如此复杂!!

[ 本帖最后由 samwjwj 于 2008-10-28 20:46 编辑 ]

使用道具 举报

Rank: 3Rank: 3

精华
1
UID
2048
积分
218
帖子
29
主题
8
阅读权限
40
注册时间
2008-8-1
最后登录
2016-8-2
4#
发表于 2008-10-28 22:08:46 |只看该作者

编了一个,好象有点问题,NOPAIN先生帮助看看!!

一、        先求昨ATR
//------------------------------------------------------------------------
// 简称: MyATR
// 名称:
// 类别: 用户函数
// 类型: 用户函数
// 输出: 数值型
//------------------------------------------------------------------------
Params
  Numeric Lentgh(1);
Vars
  Numeric HH;
  Numeric LL;
  Numeric CC;
  Numeric MyATR
Begin
HH=HighD(Lentgh);
LL=LowD(Lentgh);
CC=CloseD(Lentgh+1);
MyATR= Max(Max(HH-LL,ABS(CC-LL)),ABS(HH-CC));
        If(Day<>Day[1])
                {       
        Return HH - LL;
         }
          Else
         {
                 Return MyATR
          }
End

二、        再求平均ATR
//------------------------------------------------------------------------
// 简称: AvgMyTrueRange
// 名称: 平均真实幅度用于一分钟
// 类别: 用户函数
// 类型: 用户函数
// 输出: 数值型
//------------------------------------------------------------------------

Params
        Numeric Length(22);
Vars
    Numeric i;
        Numeric Value1;
        Numeric SumValue(0);
        Numeric AvgATR;
Begin
    //以下求昨ATR的移动平均   
        For i = Length  DownTo 1//循环,从现循环到前,length的长度
        {
                Value1 =MyATR(i);
                SumValue = SumValue + Value1;
        }
       return AvgATR=SumValue/Length;

End

[ 本帖最后由 samwjwj 于 2008-10-28 22:17 编辑 ]

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
5#
发表于 2008-10-29 10:50:49 |只看该作者
我估计也应该是有问题, For循环里面的跨周期调用应该是不行的。

用笨办法看看行不行。先求5日的平均ATR,直接写5个试试,不用For语句。

使用道具 举报

Rank: 3Rank: 3

精华
1
UID
2048
积分
218
帖子
29
主题
8
阅读权限
40
注册时间
2008-8-1
最后登录
2016-8-2
6#
发表于 2008-10-29 12:33:38 |只看该作者

有没有这样的方式!!

先人工得到每日的平均ATR数据,把此放入程序中,再在到达此日要用到此ATR时,去调用!!
比如20081001=100
     20081002=120
     20081003=115
     ……
    然后在到此日时,到此库去调用对应值!!

  NOPAIN先生认为可以实现吗??

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
7#
发表于 2008-10-29 12:52:34 |只看该作者
现在应该不行,如果有公式读文件的功能才可以实现。以后会考虑增加这些函数的

使用道具 举报

Rank: 3Rank: 3

精华
1
UID
2048
积分
218
帖子
29
主题
8
阅读权限
40
注册时间
2008-8-1
最后登录
2016-8-2
8#
发表于 2008-10-29 13:38:00 |只看该作者

笨办法不行,只有再回到编程解决了,难啊

NOPAIN先生帮忙一下啊,我也正在开户啊

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
9#
发表于 2008-10-30 12:55:19 |只看该作者
请按以下方式处理:
1、新建用户函数,返回值设置为数值型,命名为TrueRangeD,代码如下:
  1. Params
  2.         Numeric daysAgo(2);
  3. Vars
  4.         NumericSeries preClose;
  5.         NumericSeries barCnt;
  6.         NumericSeries dayHigh;
  7.         NumericSeries dayLow;
  8.         Numeric i;
  9.         Numeric j;
  10.         Numeric nIndex(0);
  11. Begin
  12.         If(Day != Day[1])
  13.         {
  14.                 If(InvalidNumeric != Close[1])
  15.                         preClose = Close[1];
  16.                 Else
  17.                         preClose = Open;
  18.                        
  19.                 barCnt = 1;
  20.                 dayHigh = High;
  21.                 dayLow = Low;
  22.         }Else
  23.         {
  24.                 preClose = preClose[1];
  25.                 barCnt = barCnt[1] + 1;
  26.                 dayHigh = max(dayHigh[1],High);
  27.                 dayLow = min(dayLow[1],Low);
  28.         }
  29.        
  30.         If(daysAgo == 0)
  31.         {
  32.                 If(preClose > dayHigh)
  33.                         Return preClose - dayLow;
  34.                 else if(preClose < dayLow)
  35.                         Return dayHigh - preClose;
  36.                 else
  37.                         Return dayHigh - dayLow;
  38.         }Else
  39.         {
  40.                 For i = 1 To daysAgo
  41.                 {
  42.                         If( i == 1)
  43.                         {       
  44.                                 j = 0;
  45.                         }Else
  46.                         {
  47.                                 j = j + BarCnt[j];
  48.                         }
  49.                         If (j > CurrentBar ) Return InvalidNumeric;
  50.                         nIndex = nIndex + BarCnt[j];
  51.                 }
  52.                
  53.                 If(preClose[nIndex] > dayHigh[nIndex])
  54.                         Return preClose[nIndex] - dayLow[nIndex];
  55.                 else if(preClose[nIndex] < dayLow[nIndex])
  56.                         Return dayHigh[nIndex] - preClose[nIndex];
  57.                 else
  58.                         Return dayHigh[nIndex] - dayLow[nIndex];
  59.         }
  60. End
复制代码

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
10#
发表于 2008-10-30 12:56:51 |只看该作者
2、新建技术指标来调用TrueRangeD求日线的ATR,代码如下:
  1. Params
  2.         Numeric Length(5);
  3. Vars
  4.         Numeric TotalTR(0);
  5.         Numeric i(0);
  6. Begin
  7.         For i=0 To Length-1
  8.         {
  9.                 TotalTR= TotalTR+ TrueRangeD(i);
  10.         }       

  11.         PlotNumeric("ATRD",TotalTR/Length);
  12. End
复制代码

使用道具 举报

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

bottom

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

GMT+8, 2024-5-3 12:59

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部