设为首页收藏本站

 找回密码
 注册
查看: 1122|回复: 4

Commentary能正常显示Bar上序列的数值,但是PlotNumeric显示为N/A [复制链接]

Rank: 3Rank: 3

精华
0
UID
270873
积分
133
帖子
65
主题
28
阅读权限
40
注册时间
2018-10-4
最后登录
2021-4-2
发表于 2018-12-18 15:24:15 |显示全部楼层
本帖最后由 colin10g 于 2018-12-18 15:36 编辑

今天遇到一个问题。我这里有这样一段代码,试图在图表中显示一个数值序列Value的值,但是发现使用Commentary能正常显示Bar上Value序列的数值,但是如果使用PlotNumeric,则Bar上Value序列的数值显示为N/A,不太明白这是为什么。

下面的测试例子跑在1日线上(随便选了TA888),样本数选了400个。

====================================================
//本代码是一个简化版,主要是为了重现在1日线K图上发现的一个情况:对于一个数值序列Value,用Commentary能在Bar上正常显示每个Bar对应的Value数值,但是用PlotNumeric就不画出该Bar的Value点,而且Value数值还显示为"N/A"

Vars
    NumericSeries Value;            // 主要期望输出线的数据
    Numeric today_bar;

Begin
    // 下面这条语句来自于一个大代码段,经过反复筛查发现主要是这条语句影响PlotNumeric显示Value序列的数值,但是不理解这条语句与Value序列的显示有什么联系
        today_bar = highest(BarsSinceToday,360);       
               
    // 如果有上面这条语句,则下面的PlotNumeric就无法画出前300多个个Value的数据连线,PlotNumeric只能在bar上显示Value的值是"N/A",但这些Bar上的Value是有具体数字的,因为Commentary能在Bar上正常显示每个Bar对应的Value数值
    // 把上面这行语句删除,则下面的PlotNumeric正常显示,不明白为什么

    Value = Average(close[1],10);
    Commentary("ValueByCommentary:"+Text(Value));
    PlotNumeric("ValueByPlotNumeric",Value,0,yellow);

End
============================================

这段代码跑完,图表是这个样子的,Value就是一个简单的平均值序列,但是可以注意到图表左侧大多数Bar上没有画出Value对应的曲线:



用鼠标点击单个Bar,可以看到,该Bar的信息里面,Commentary能够正常显示Value的数值,但是PlotNumeric将该数值显示为N/A



要说PlotNumeric完全不显示Value序列的值,也有些冤枉,右侧还有大约40个Bar,既能显示PlotNumeric的值,也能显示Commentary的值(猜测是选取的400个样本,减掉highest函数中的参数360)



可这是为什么啊?不理解亚

现在我们把那行highest函数去掉,代码如下
//------------------------------------------------------------------------

Vars
    NumericSeries Value;            // 主要期望输出线的数据
    Numeric today_bar;

Begin
        // 如果有上面这条语句,则下面的PlotNumeric就无法画出前300多个个Value的数据连线,PlotNumeric只能在bar上显示Value的值是"N/A",但这些Bar上的Value是有具体数字的,因为Commentary能在Bar上正常显示每个Bar对应的Value数值
        // 把上面这行语句删除,则下面的PlotNumeric正常显示,不明白为什么

    Value = Average(close[1],10);
    Commentary("ValueByCommentary:"+Text(Value));
    PlotNumeric("ValueByPlotNumeric",Value,0,yellow);

End
//------------------------------------------------------------------------

现在这个图表就正常了



所以感觉好奇怪,highest函数对PlotNumeric有什么间接的影响吗?但是Commentary就不受影响。
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
发表于 2018-12-19 16:07:50 |显示全部楼层
本帖最后由 小米 于 2018-12-19 16:10 编辑

maxbarsback是获取当前公式应用所需的最大回溯Bar数。TB的机制里,在currentbar<maxbarsback的情况下,是不会输出plot的信息以及显示信号的。
因为此时的输出结果是可能因为计算所需的样本数量的不足而有错的,所以有此限制。
而commentary是专门为调试信息用,不影响指标、信号的表现 ,所以没有上述的限制。

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
270873
积分
133
帖子
65
主题
28
阅读权限
40
注册时间
2018-10-4
最后登录
2021-4-2
发表于 2018-12-19 19:02:00 |显示全部楼层
小米 发表于 2018-12-19 16:07
maxbarsback是获取当前公式应用所需的最大回溯Bar数。TB的机制里,在currentbar

谢谢小米大大。我这么理解对吗:maxbarsback是一个公式应用里面各个语句所需回溯Bar数(各自不同)取最大值,但是这个公式应用里面的各个语句都需要遵守这个最大值maxbarsback,所以所需回溯Bar数比较小的语句,即使回溯Bar数量已经够了,也需要等待所需回溯Bar数最大的那条语句达到回溯Bar数的条件,才能开始PlotNumeric。这么理解可以吧?

感谢感谢

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
发表于 2018-12-20 09:12:06 |显示全部楼层
colin10g 发表于 2018-12-19 19:02
谢谢小米大大。我这么理解对吗:maxbarsback是一个公式应用里面各个语句所需回溯Bar数(各自不同)取最大 ...

是这样的。

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
270873
积分
133
帖子
65
主题
28
阅读权限
40
注册时间
2018-10-4
最后登录
2021-4-2
发表于 2018-12-21 02:24:32 |显示全部楼层
小米 发表于 2018-12-20 09:12
是这样的。

明白啦,多谢多谢

使用道具 举报

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

bottom

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

GMT+8, 2024-4-18 20:17

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部