设为首页收藏本站

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

叠加数据后,函数取数据有问题,请问为什么? [复制链接]

Rank: 3Rank: 3

精华
0
UID
212247
积分
128
帖子
83
主题
23
阅读权限
40
注册时间
2015-6-28
最后登录
2019-11-15
跳转到指定楼层
1#
发表于 2015-9-1 20:45:46 |只看该作者 |倒序浏览
Vars
   Numeric volcon(0);

Begin
     If(date>20150825)
{
    PlotNumeric("bars",data1.barssincetoday);
   PlotString("date",Text(data1.openD(0)));
        }
End       

   //   data0 为if000    data1 为沪深300  ,        PlotNumeric("bars",data1.barssincetoday); 这个命令用来取 沪深300 开盘到目前的bar数。但是测试出来的确实9:15开始的 股指的bar根数。
   
   //  PlotString("date",Text(data1.openD(0)));   这个本来想取 data1的 openD(0) 数据,但是 取出来的 也是data0   if000的数据,请问为什么? 使用错了吗?
  

Rank: 3Rank: 3

精华
0
UID
212247
积分
128
帖子
83
主题
23
阅读权限
40
注册时间
2015-6-28
最后登录
2019-11-15
2#
发表于 2015-9-1 20:47:49 |只看该作者
多数据源 操作,用到的函数 如果这样,那都不能用了,取不到data1 等后面的数据。请问用多个数据有什么需要注意的吗?

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
212247
积分
128
帖子
83
主题
23
阅读权限
40
注册时间
2015-6-28
最后登录
2019-11-15
3#
发表于 2015-9-1 21:17:32 |只看该作者
//------------------------------------------------------------------------
// 简称: data1_OpenD
// 名称: data1的OpenD
// 类别: 用户函数
// 类型: 用户函数
// 输出: 数值型
//------------------------------------------------------------------------

Params
        Numeric daysAgo(2);
Vars
        NumericSeries barCnt;
        NumericSeries dayOpen;
        Numeric i;
        Numeric j;
        Numeric nIndex(0);
        Numeric CBIndex;
Begin
        CBIndex = data1.CurrentBar;
        If(CBIndex == 0 || TrueDate(0)!=TrueDate(1))
        {
                barCnt = 1;
                dayOpen = data1.Open;
        }Else
        {
                barCnt = barCnt + 1;
        }
               
        If(daysAgo == 0)
        {
                return dayOpen;
        }Else
        {
                For i = 1 To daysAgo
                {
                        If( i == 1)
                        {       
                                j = 0;
                        }Else
                        {
                                j = j + BarCnt[j];                               
                        }
                        If (j > CBIndex )
                                Return InvalidNumeric;
                        nIndex = nIndex + BarCnt[j];
                }
                Return dayOpen[nIndex];
        }
End


   按照论坛里面的其他帖子提示, openD  跟 barssincetoday 函数,都无法通过测试。  说是 返回值类型 跟公式定义的返回值类型不符。
简称: data1_BarsSinceToday
// 名称: data1的bars sincetoday
// 类别: 用户函数
// 类型: 用户函数
// 输出: 数值型
//------------------------------------------------------------------------

Vars
        NumericSeries ReBars;
Begin
        If(data1.CurrentBar == 0 || TrueDate(0)!=TrueDate(1))
        {
                ReBars = 0;
        }Else
        {
                ReBars = ReBars + 1;
        }
        Return ReBars;  
End

    请问版主如何解决....

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
212247
积分
128
帖子
83
主题
23
阅读权限
40
注册时间
2015-6-28
最后登录
2019-11-15
4#
发表于 2015-9-1 21:20:57 |只看该作者
最好是 版主能把 修改好的 代码贴出来,学习一下。   

使用道具 举报

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

bottom

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

GMT+8, 2024-4-27 13:21

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部