设为首页收藏本站

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

tb使用bool去判断lowest时,出现的bug [复制链接]

Rank: 1

精华
0
UID
217121
积分
13
帖子
9
主题
3
阅读权限
10
注册时间
2015-8-16
最后登录
2016-8-4
跳转到指定楼层
1#
发表于 2016-3-21 09:05:15 |只看该作者 |倒序浏览
用下面的代码,在PP1605合约,2016年3月10日当天,1分K周期上测试一下。
大概的BUG就是,在BoolSeries里面如果有用到 Lowest这个函数,会计算出错。
//------------------------------------------------------------------------
// 简称: BUG_PP1605 测试时间段 20160310当天 周期1分K
// 名称:
// 类别: 公式应用
// 类型: 用户应用
// 输出:
//------------------------------------------------------------------------   
Vars
    BoolSeries Con1;
   
    BoolSeries Con2;
   
    BoolSeries ConWrong;
   
    BoolSeries ConRight;
   
    BoolSeries ConRight2;

    NumericSeries LL10;

Begin
   
    LL10 = Lowest(L, 10);
   
    Con1 = Time >= 0.1109 && Time <= 0.1115;
   
    Con2 = (Lowest(L, 10) >= C);   //最近10个周期的最低点是否大于当前收盘价
   
    ConRight = Con1 && Con2; //这里令 ConRight 等于 Con1和Con2的并集
   
   
    ConWrong = Con1 and (Lowest(L, 10) >= C); //这里令 ConWrong 等于 Con1和Con2的并集,但是写法上把Con2给展开,发现竟然输出结果和ConRight不符!!!!!!卧槽这特么是什么梗?!!!!
   
   
    ConRight2 = Con1 and (LL10 >= C);  //这里令 ConWrong 等于 Con1和Con2的并集,但是写法上把Con2给展开并做代换 LL10 = Lowest(L, 10),这时输出结果和ConRight相符
   
    PlotBool("Con1", Con1, H + 200);
   
    PlotBool("Con2", Con2, H + 100);

    PlotBool("ConWrong", ConWrong, L - 100);
        
    PlotBool("ConRight", ConRight, L - 200);
   
    PlotBool("ConRight2", ConRight2, L - 300);


End

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
2#
发表于 2016-3-21 13:10:15 |只看该作者
lowest是序列函数,其赋值 运算是不应该有条件限制的。
在上层条件限制下,会导致 取值范围受限,从影响最后的计算结果 。。
正确的方法是使用中间变量以lowest(L,10)进行赋值 ,再将中间变量代入con2中或是代入CONWRONG中。

使用道具 举报

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

bottom

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

GMT+8, 2024-5-20 14:27

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部