用Polyline画图时x坐标设置

用Polyline画线时想用Bar的索引值作为x轴坐标而不是用time, 代码如下,但是不工作,请问时哪里有问题:

Vars
    Plot plt;
Events
    OnInit()
    {
 
        plt.setOption("x-format","numeric");
        
        plt.setOption("line", "color", Red);
        plt.setOption("line", "width",   3);
        plt.setOption("line", "style", Enum_Dash_Dot);
        
    }

    OnBar(ArrayRef<Integer> indexs)
    {
        
        If(BarStatus == 2) 
        {
            // 希望从图表开始的第10根K线位置作为起点,第25根作为终点画折线
            plt.ployline("line", Close[BarCount - 10], 10, 0, True); 
            plt.ployline("line", Close[BarCount - 25], 25, 1, True);
        
        }
       
    }


使用SetPremiseFormulas加载含有plotline函数的策略画图失效测试代码
软件画图区域设置问题
请问如何取得上一根bar的横坐标
对数坐标
请教一下,如何编程实现按百分比坐标来画坐标。
副图y轴独立坐标,或者叠加效果
请问老师哪个函数是:取满足条件A>B时X的值?
不同周期上下图层怎么设置不共用x轴
画图
如何新建窗口进行画图

只有智大领峰支持这个函数

而且我看你的代码逻辑感觉有点问题。

x轴应该是横轴,y轴应该是纵轴

你是不是搞反了

用DeepSeek AI 回答的。我只是转抄。

---------------------------------------------------------------------------------------------

修正后的代码:


复制

Vars
    Plot plt;
Events
    OnInit()
    {
        // 设置X轴为数值格式
        plt.setOption("x-format", "numeric");
        
        // 设置线条样式
        plt.setOption("line", "color", Red);
        plt.setOption("line", "width", 3);
        plt.setOption("line", "style", Enum_Dash_Dot);
    }

    OnBar(ArrayRef<Integer> indexs)
    {
        If (BarStatus == 2) 
        {
            // 从第10根K线到第25根K线画一条折线
            plt.ployline("line", 10, Close[BarCount - 10], 25, Close[BarCount - 25], True);
        }
    }


问题分析:

  1. ployline 参数顺序问题:在 TB 中,ployline 的参数顺序是:(id, x1, y1, x2, y2, draw)。你之前的代码中,Close[BarCount - 10] 和 Close[BarCount - 25] 被错误地放在了 x1 和 x2 的位置,而它们应该是 y1 和 y2。
  2. X 轴索引值问题:你希望使用 Bar 的索引值作为 X 轴坐标,因此 x1 和 x2 应该是具体的索引值(如 10 和 25),而不是价格。
  3. BarCount 的使用:BarCount 是当前 Bar 的总数,Close[BarCount - 10] 表示从当前 Bar 往前数第 10 根 Bar 的收盘价。如果你希望从固定的第 10 根和第 25 根 Bar 画线,直接使用 10 和 25 作为 X 轴坐标即可。


代码解释:

  • plt.ployline("line", 10, Close[BarCount - 10], 25, Close[BarCount - 25], True);10 和 25 是 X 轴坐标,表示第 10 根和第 25 根 Bar 的索引。Close[BarCount - 10] 和 Close[BarCount - 25] 是 Y 轴坐标,表示对应 Bar 的收盘价。True 表示立即绘制。


注意事项:

  1. Bar 索引从 1 开始:在 TB 中,Bar 的索引是从 1 开始的,因此第 10 根 Bar 的索引是 10,第 25 根 Bar 的索引是 25。
  2. BarStatus == 2:BarStatus == 2 表示当前 Bar 是闭合的(即已经完成),此时可以安全地使用 Close 数据。
  3. plt.setOption("x-format", "numeric"):设置 X 轴为数值格式,确保 X 轴显示的是 Bar 的索引值而不是时间。


测试:

  • 运行代码后,你应该会在图表上看到一条从第 10 根 Bar 到第 25 根 Bar 的红色虚线。
  • 如果仍然有问题,请检查 TB 的版本和日志输出,确保没有其他错误。

您用AI生成的代码连编译都过不去,请老师自己先编译试一下再回复,节省彼此的时间。

DeepSeek, Kimi,ChatGPT, 豆包, Perplexity, Github Copilot这些辅助的AI我都有,我也可以自己问,自己测试,不麻烦老师做AI的搬运工。