数据缺失

见贴图,SA888一分钟K线图在2022年12月6日9点59分后,缺失10点和10点01分的Bar数据。

请确认是否复现。

数据缺失
数据缺失导致的错误
777合约数据缺失
期货SF888/OI888数据缺失
套利策略中数据缺失导致开仓不平,数据上怎么判断
求助:跨品种叠加时数据缺失如何检查?
TBQuant数据缺失问题
疑似数据缺失导致的错误
tick数据缺失,函数结果错误
由“数据缺失”引发的问题

邮件已于2023年3月2日腾讯课堂直播讲解

不太明白邮件里的问题在哪里,感觉并没有描述出问题出在哪里

截图里显示不正确的输出,但是对应代码并没有在邮件里,不能说明机制有问题

再重申一边,onbaropen不存在跳过的机制,只要是第一tick肯定能驱动oknbaropen的运行,不管是当前bar内何时到来

算法不对,图上显然有个一分钟是没有行情的,你却要判断同时一个时间点有2个onbaropen 自然那个就被跳过了

就是你的十字光标上下同时有才会满足你的条件

是我这个问题老师们认为已经回答了吗?

还是这个问题太蠢了?

管理员能帮我看看上述代码吗?

2022年12月6日  市场统一停盘了几分钟。

这正是我担心的地方,因为是刚好在整点的时候没有tick过来。这样一来例如在30分钟周期图层上,10点开始的OnBarOpen()域被跳过了,没有执行OnBarOpen()域内的代码。10点02分的tick并不被视为OnBarOpen()。

不知道我的表述是否清楚?

这种情况不存在的。第一个tick驱动onbaropen,没有限定这个tick必须是某个时间段内的,你为什么会产生这种想法。

第一个tick就是第一个tick,它就算是10点59分收到,只要是第一个tick,那就会驱动onbaropen。

你可以随便找个不活跃的合约试试

请运行一下下述代码,我对跨周期图层运行是否理解正确。

重点在12月6日10点,如果小周期是3分钟以上,大周期的OnBarOpen可被正确驱动,而如果是一分钟小周期,大周期的OnBarOpen被跳过了。


Params
    String symb("SA888.CZCE");                                // 合约品种
    String D0Frequency("30m");                                // 大周期频率
    Enum<String> D1Frequency(["1m","90s","3m","5m","15m"]);    // 小周期频率

Vars
    Global Integer gIntData_0;            // 大周期图层号
    Global Integer gSmallDataId;        // 小周期图层号
    Series<Integer> sIntSmallDataBarNr;    // 大周期内小周期Bar序数

Events
    OnInit()
    {
        gIntData_0 = SubscribeBar(symb,D0Frequency,20221201.18,20221212.18);
        gSmallDataId = SubscribeBar(Data[gIntData_0].Symbol,D1Frequency,Data[gIntData_0].BeginDateTime,Data[gIntData_0].EndDateTime);    // 小周期图层编号
    }
    OnBarOpen(ArrayRef<Integer> indexs)
    {
        If(ArrayFind(indexs,gSmallDataId))    // 如果被驱动的indexs[]里包含小周期图层
        {
            Range[gSmallDataId:gSmallDataId]
            {
                If(ArrayFind(indexs,gIntData_0))    // 同时大周期也被驱动时
                    sIntSmallDataBarNr = 1;            // 小周期Bar序号重置为 1
                Else                                // 全部图层周期中仅小周期被驱动时
                    sIntSmallDataBarNr = sIntSmallDataBarNr[1]+1;    // 小周期Bar序号累加
            }
        }
    }
    OnBar(ArrayRef<Integer> indexs)
    {
        Range[gSmallDataId:gSmallDataId]
        {
            If(sIntSmallDataBarNr == 1)
                PlotString("1st Bar",Text(sIntSmallDataBarNr),Low,Yellow);
            Else Commentary("小周期序号= "+Text(sIntSmallDataBarNr));
        }
    }

通过对比第三方后(通达信),确认这个是没有的,是正常的。