设为首页收藏本站

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

同样是取昨天收盘价,为什么会不一样呢 [复制链接]

Rank: 1

精华
0
UID
190198
积分
14
帖子
10
主题
4
阅读权限
10
注册时间
2014-7-8
最后登录
2023-3-30
跳转到指定楼层
1#
发表于 2016-8-22 15:28:07 |只看该作者 |倒序浏览
本帖最后由 bingkun2010 于 2016-8-22 15:34 编辑

同样是取昨天收盘价,为什么会不一样呢?请大神指点,谢谢!

Vars
NumericSeries a;
NumericSeries b;
NumericSeries c;
NumericSeries d;

Begin
        if(Date!=Date[1])
        {
                a = CloseD(1);
        }
       
        if(Time==0.0940)
        {
                b = CloseD(1);
        }
        if(Time==0.1000)
        {
                d = CloseD(1);
        }
       
        c=CloseD(1);
       
        Commentary("a  "+Text(a));
        Commentary("b  "+Text(b));
        Commentary("c  "+Text(c));
        Commentary("d  "+Text(d));
       


End

Rank: 1

精华
0
UID
190198
积分
14
帖子
10
主题
4
阅读权限
10
注册时间
2014-7-8
最后登录
2023-3-30
2#
发表于 2016-8-22 15:35:34 |只看该作者
只要放在条件语句里面取数据,都会错误,为什么呢?

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
3#
发表于 2016-8-22 15:43:52 |只看该作者
bingkun2010 发表于 2016-8-22 15:35
只要放在条件语句里面取数据,都会错误,为什么呢?

closeD是序列函数,放到条件下计算是可能因为条件的取值范围受限,从而影响计算结果的准确性。
正确的使用方法是函数在条件外赋值 给变量,再将变量放入条件中使用。

使用道具 举报

Rank: 1

精华
0
UID
190198
积分
14
帖子
10
主题
4
阅读权限
10
注册时间
2014-7-8
最后登录
2023-3-30
4#
发表于 2016-8-22 16:24:44 |只看该作者
小米 发表于 2016-8-22 15:43
closeD是序列函数,放到条件下计算是可能因为条件的取值范围受限,从而影响计算结果的准确性。
正确的使 ...

您的意思就是序列变量放在条件语句中都有可能会错误咯,这可是一大Bug啊,close这些可也是序列变量哦。还有像CloseD这种变量的获取和相关计算只需每天计算一次,我放在Date!=Date[1]条件中可以提高代码执行效率,如果放在条件外的话,要每个Tick执行一次,效率就非常差了。

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
5#
发表于 2016-8-22 16:31:37 |只看该作者
bingkun2010 发表于 2016-8-22 16:24
您的意思就是序列变量放在条件语句中都有可能会错误咯,这可是一大Bug啊,close这些可也是序列变量哦。还 ...

我说的是序列函数,不是序列变量。
序列函数是指在计算中,需要一定的序列的数据方可计算得到结果的。

使用道具 举报

Rank: 1

精华
0
UID
190198
积分
14
帖子
10
主题
4
阅读权限
10
注册时间
2014-7-8
最后登录
2023-3-30
6#
发表于 2016-8-22 17:49:33 |只看该作者
小米 发表于 2016-8-22 16:31
我说的是序列函数,不是序列变量。
序列函数是指在计算中,需要一定的序列的数据方可计算得到结果的。

多谢,不过这种序列函数机制要改改啊,不然像这种取数据的效率会很低的,明明当天取一次就可以了,非要每笔tick都执行,效率会低太多的。有没有什么好的解决方法呢?

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
7#
发表于 2016-8-23 08:53:33 |只看该作者
bingkun2010 发表于 2016-8-22 17:49
多谢,不过这种序列函数机制要改改啊,不然像这种取数据的效率会很低的,明明当天取一次就可以了,非要每 ...

机制就是如此 。
您可以试一下极速版,极速版上使用序列函数不受此限制 。

使用道具 举报

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

bottom

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

GMT+8, 2024-5-23 22:47

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部