如何让策略过滤掉没有数据而强制留空的BAR

请问,如何在BAR数据产生空值的时候,跳过这根BAR不执行策略?

如下图一和图二:

data-href=

data-href=

图一和图二都是一个跨周期策略(大周期1分钟,小周期1秒钟)的1秒钟小周期。图一光标对应的时间是112557,图二光标对应的是122603,中间有一个空值BAR。之前留贴问过,之所以会产生一个空值BAR,是因为跨周期策略要强制大周期和小周期时间对齐,即使小周期没有数据,也要留一个空值BAR。 https://old.tbquant.net/forumDetail?cur=tbquan&id=13762

但因为我的策略在运行到这个空值BAR的时候,会产生奇怪的报单(类似于信号闪烁这种),原因很难排查。除了这种空值产生报单错误外,其它交易均没信号闪烁,因此可以判断代码里不存在常规意外下的那种信号闪烁BUG。

因此,有没有办法让策略在碰到这种BAR空值的情况下,跳过这根BAR,或者让策略在这种情况下不运行?可以用什么指标来过滤?

谢谢




旗舰版的tb策略下,如何过滤掉乌龙指
如何让策略自动运行
PlotNumeric输出数据的时候怎么让没有输出数据的位置不显示连线?
1分钟BAR数据的23整点的BAR数据为什么没有?
旗舰版现阶段强制升级后历史数据如何保障,当初承诺旗舰期货历史数据齐全呢?
如何让读写的数据隐藏起来
在onbar以外的事件域中如何获取bar数据?
指定bar 数据的获取。
请问老师,如何实现反手的同步逻辑,而避免平仓单没有成交,就又开反向仓
如何获取前一根bar的数据

也正是因为1秒线经常因为没有成交量就省略了画线,所以下面1分钟图的间隔,看起来有大有小。这就是因为1分钟只画了1根,而1秒线有成交量才画导致的

不是您那个意思。我上图跟您解释下。我说的并集的意思是,本来1分钟对应了60个1秒,所以正常来讲应该画60个变化的1分钟图来和1秒图对应。也就是说1秒和1分钟叠加后的并集,就是60个一一对应的关系图。但由于1分钟画那么多,就看不出本来的走势了,所以我们系统只在1分钟的第一个1秒画了一个K线。而你看到的11:26分1秒图的空白,是因为这个1秒图在这个时刻没有成交量,所以就没有画K线,导致看起来像个空白。但并不是所有的第一个1秒都是没成交量的,图中左边框出来的就是有成交量的1秒线。我说的意思,您看懂了吗?

data-href=

1、你好,我看得明白,我本来的理解就是这样啊。最早发贴的时候我已经表述了我对这个空值的理解,李可能我之前的表述看起来不清楚,但就是你说的这个意思:

\"\"

2、如果上述这个理解没问题。那接下来的问题就是这个1秒图空值(或者叫省略画线)其实是会对策略产生影响的,或者说是BUG。这个BUG会产生奇怪的报单,连PRINT都PRINT不出来是什么原因。所以我就想干脆试着跳过去,过滤掉算了。那么怎么样才能过滤呢?

你说用成交量是否大于0来判断是不行的,为什么呢?你上面不是说这个省略画线就是因为没有成交量的原因吗?

\"\"

3、如果不能用成交量是否大于0来判断 ,还能用什么办法呢?

谢谢

	OnBar(ArrayRef<Integer> indexs)
	{
		Integer i;
		for i = 0 to GetArraySize(indexs)-1
		{
			If(indexs[i] == 0)	//假定您的1秒是Data0
			{
				//这里写您的处理代码
			}
		}
	}

@hyqh901097026

您好,我实际操作,复刻了一下您的应用场景,实际上那个不是空bar,而是1秒周期叠加1分钟周期产生的K线并集。通过Vol>0测试来看达不到想要的效果,只有通过indexs数组元素判断可以。但您说您1秒图只是报单,不会影响1分钟的信号,之前除了这种空值,其它都没信号闪烁,这个我还是没想明白是什么原理。

也就是说,您要过滤这个所谓的空白bar是能做到的,要通过indexs数组元素来判断,通过VOL>0是不行的。但我担心的就是通过Indexs数组判断跳过1秒图的这次执行,对您的信号是否会造成闪烁。因为,我对您说的1分钟产生信号,1秒图发单,还没完全弄清楚。您的发单是用BuySell还是函数,如果是Buysell那信号不就在1秒图吗?跳过一次运行也会造成信号闪烁的,所以,这个问题您要考虑下

你好,谢谢回复。

能再进一步解释一下,什么是1秒周期叠加1分钟周期产生的K线并集吗?这个我不理解,所以就没法理解你接下去说的用indexs数组元素的判断方法。

我的发单都是BUYSELL,没有用A函数。

我对您说的1分钟产生信号,1秒图发单,还没完全弄清楚。您的发单是用BuySell还是函数,如果是Buysell那信号不就在1秒图吗?跳过一次运行也会造成信号闪烁的,所以,这个问题您要考虑下--------我的意思是,空值那个BAR(或者按你说的并集那个BAR)本来按逻辑来说就没有发单信号(回测报告和图表上都没有信号,而是因为这个特殊的BAR产生了一笔奇怪的交易(实盘报单了)。所以跳过以后,我的理解是应该不会有信号闪烁



你说的K线并集,是不是说它是多个1秒钟并在一起的BAR呢?

比如说,有5秒钟没有数据,系统就把这5秒钟拼成一个BAR,但这个BAR没有价格也没有成交量,是指这个意思吗?

我没研究过这种非连续的情况,我想到的是在进行交易的代码条件中加入vol > 0 即当满足条件加上bar上出现成交量后才进行交易,不知道合不合理。

或者你当满足Time == (lastDateTime - date -0.000001),这样就能跳过空bar了。不过这是理论上看起来可行,不知道实际怎么样