ployline画图问题

画线语句为:

              if(close < open and Up)
              {

                  Plt_ZT.ployline("阻力位", date + time, high, 0, true);
                  Plt_ZT.ployline("阻力位", date[-3] + time[-3], high, 1, true);
    
              }

满足条件的时候,往未来3根K线画横线

但当K线数量不够的时候,就变成往前画了,一直画到第一根K线

不影响计算,只是看着有点别扭

使用SetPremiseFormulas加载依赖公式后,plot画图中的ployline函数失效
PLOT画图变色问题
不能用Ployline画折线吗?
用Polyline画图时x坐标设置
画图
画图输出问题
如何新建窗口进行画图
软件画图区域设置问题
关于画图函数的问题
关于跨周期的画图的问题

还有个问题

如果单独画图的公式加载多个周期的画图正常


如果额外加载一个订阅了多周期的公式,那么长周期上面的画图就是全部往前画的

这个加载的订阅了周期的公式是发布的

把Data1.Hide; 这行注释掉,显示出多周期

策略中是不是使用了不同图层的数据导致获取到了无效值?

有可能,

我遇到的新问题,也许也与此有关

暂时还没找出原因

老师 我弄出来最小能定位问题的代码了


demo1:

//------------------------------------------------------------------------
// 简称: test_if
// 这个代码就画个图
-------------------------------------------------------------------
Params
    //此处添加参数
    
Vars
    //此处添加变量
    plot Plt_ZT;
    
Defs
    //此处添加策略函数
        
Events
    //此处实现事件函数
    
    //初始化事件函数,策略运行期间,首先运行且只有一次
    OnInit()
    {
        //        SubscribeBar(Symbol,"15m",BeginDateTime); //自己订阅的多周期不会闪退
    
    }
    

    //Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
    OnBar(ArrayRef<Integer> indexs)
    {
        
        range[0:DataSourceSize - 1]
        {
    
            if(close > open And close[1] > open[1] And close[2] > open[2]  )
            {
                
                  Plt_ZT.ployline("三连阳", date + time, low, 0, true);
                  Plt_ZT.ployline("三连阳", date[-3] + time[-3], low, 1, true);

    
            }

    }
    
//------------------------------------------------------------------------
// 编译版本    2025/12/3 93440
-----------------------------

demo2:

// 这个代码就订阅个周期+设置下运行频率
Params

Vars

Events
    

    OnInit()
    {
        SubscribeBar(Symbol,"15m",BeginDateTime);
        SetBasePeriod("15m"); //出问题就是这句,没有这句画图就是正常的
        
    }

SetBasePeriod("15m"); //问题出在这句

咦,在原始画图代码里订阅  ,如果加这句,也会出问题了.....

我就不改了....

图就是这么个图


这是不是plot的机制和周期数据对齐机制冲突了?

有法改吗?


Params
    //此处添加参数
    
Vars
    //此处添加变量
    plot Plt_ZT;
    Series<bool> isTripleUp(False,4);
    
Defs
    //此处添加策略函数
        
Events
    //此处实现事件函数
    
    //初始化事件函数,策略运行期间,首先运行且只有一次
    OnInit()
    {
        //        SubscribeBar(Symbol,"15m",BeginDateTime); //自己订阅的多周期不会闪退
    
    }
    

    //Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
    OnBar(ArrayRef<Integer> indexs)
    {
        
        range[0:DataSourceSize - 1]
        {
        
            isTripleUp = close > open And close[1] > open[1] And close[2] > open[2];
            if(isTripleUp[3])
            {
                Plt_ZT.clear("三连阳", date[3] + time[3]);
                Plt_ZT.ployline("三连阳", date[3] + time[3], low[3], 0, true);
                Plt_ZT.ployline("三连阳", date + time, low[3], 1, true);
        
        
            }
        }

    }

不要使用未来时间 调用了SetBasePeriod历史数据以基础周期频率执行,[-3]获取的时间也是未来数据,改为上面的代码试试

好的吧~谢谢老师🤞

使用了未来时间超出了当前的bar数量 时间返回的是无效值 可以进行判断一下再进行绘图

这个代码最好调整为向历史方向绘图

嗯嗯 这不是想偷懒😀

想着比如有 时间轴虚拟占位:如果作图超出原有时间轴,根据需求虚拟几个时间点

或者进入待画 出现了再补

没搞过开发 不知道难度或者是否在胡说八道

您的v是多少我加您一下

抱歉抱歉非常抱歉 社区发contact info是违规的哈~~

有问题可以大家一起看看

我经常回答错误 老师看到都会帮忙纠正的 比听一个人胡说被带偏的好

🤝🤝

学习了

收到