设为首页收藏本站

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

为什么HighD(1)值在日线bar和1分钟bar上的结果不一样 [复制链接]

Rank: 3Rank: 3

精华
0
UID
258539
积分
159
帖子
111
主题
34
阅读权限
40
注册时间
2017-11-1
最后登录
2019-12-29
跳转到指定楼层
1#
发表于 2017-12-14 02:20:50 |只看该作者 |倒序浏览
以日线为单位的bar返回值是对的,但是以1分钟为单位的bar返回值不对,HighD(1)不管应用在什么bar上应该都是表示头一天的最高值吧?

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
2#
发表于 2017-12-14 08:51:16 |只看该作者
看一下1分钟图表里商品设置的K线数有多少?是否包含一天前的全部K线数据?

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
258539
积分
159
帖子
111
主题
34
阅读权限
40
注册时间
2017-11-1
最后登录
2019-12-29
3#
发表于 2017-12-15 12:38:32 |只看该作者
@小米,样本肯定是足够的,一个月的样本,分析的中间时间段。还发现一个问题,1分钟bar,白天的HighD(1)和晚上21点后的HighD(1)也不一样。商品是螺纹钢连续。

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
4#
发表于 2017-12-15 13:37:45 |只看该作者
Yvan0617 发表于 2017-12-15 12:38
@小米,样本肯定是足够的,一个月的样本,分析的中间时间段。还发现一个问题,1分钟bar,白天的HighD(1)和 ...

代码怎么写的?其运算有没有上层条件的限制 ?

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
258539
积分
159
帖子
111
主题
34
阅读权限
40
注册时间
2017-11-1
最后登录
2019-12-29
5#
发表于 2017-12-16 14:01:11 |只看该作者
测试程序如下,我用的是rb888,早上9点的1分钟bar测试,两次打印结果不一样
Params

       
Vars
        Numeric i;
        Numeric StartTime;        //开盘时间
        Numeric StartTimeH;        //开盘时间小时
        Numeric StartTimeM;        //开盘时间分钟


Begin
       
        Commentary("第一次:HighD(1)="+Text(HighD(1))+" CloseD(1)="+Text(CloseD(1)));

        StartTime = GetSessionStartTime(0);

        For i = 1 To GetSessionCount() - 1
        {

                if(StartTime > GetSessionStartTime(i))
                {

                        StartTime = GetSessionStartTime(i);
                }
               
        }

        StartTimeH = HourFromDateTime(StartTime);
        StartTimeM = MinuteFromDateTime(StartTime);

        if(Hour()==StartTimeH&&Minute()==StartTimeM)
        {
                SetGlobalVar2("IsCloseTime",0);
        }
        if(GetGlobalVar2("IsCloseTime")==1) return;

        Commentary("第二次:HighD(1)="+Text(HighD(1))+" CloseD(1)="+Text(CloseD(1)));
        SetGlobalVar2("IsCloseTime",1);
       
End

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
258539
积分
159
帖子
111
主题
34
阅读权限
40
注册时间
2017-11-1
最后登录
2019-12-29
6#
发表于 2017-12-19 01:49:44 |只看该作者
@小米,有什么结论了么?

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
7#
发表于 2017-12-19 08:54:25 |只看该作者
Yvan0617 发表于 2017-12-19 01:49
@小米,有什么结论了么?

5#的代码里,第二次打印前有一个return啊。。。
序列函数的赋值 运算前加了条件或是有return是可能导致序列取值不完整,从而影响计算结果的。。

你将return去掉再看看打印结果。。
或者声明几个中间变量,在公式前段将highD(1),closeD(1)等赋值给中间变量后,再到不同的条件下打印这些中间变量即可。

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
258539
积分
159
帖子
111
主题
34
阅读权限
40
注册时间
2017-11-1
最后登录
2019-12-29
8#
发表于 2017-12-19 23:37:10 |只看该作者
@小米,不是很明白
1、就算return语句不被执行,只要出现了“return”这调命令,后面的所有序列运算可能出错?
2、如果上面一条成立,那程序里面就不能出现return语句了。如果要达到在某种条件下程序不往下走,还有其他简单办法么?
3、“序列函数的赋值 运算前加了条件可能导致序列取值不完整”,这句话不是很明白,难道if(){}的大括号里面不能出现序列值的读取?能否举例说明一下

使用道具 举报

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

bottom

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

GMT+8, 2024-4-19 17:02

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部