Date和CurrentDate的问题

在学习TBQuant3编程的时候,我遇到了一个问题:

以下是一段案例教学中的内容,是一个日内交易策略的平仓逻辑,策略要求当日收盘前必须平仓:

If( ( Date[-1] != InvalidInteger  &&  Date != Date[-1] )  ||  ( Date[-1] == InvalidInteger  &&  Date < CurrentDate ) )

{

   Sell( 1 , Close ) ;

   Buy( 1 , Close ) ;

}

我的疑问是:

1、If条件的第二部分是什么意思?

2、Date[-1]在什么情况下会等于无效值?

3、Date在什么情况下会小于CurrentDate ?

date函数在旗舰版里如何控制开平仓时间
对于time和currenttime的疑惑,难以排除问题
夜盘的K线用date函数取的不是下一个交易日期?
实盘和回测的问题
关于NthCon和CLOSED的问题
识别日线的BAR可以用date()这个值来识别,以股指为例,在1小时图上如果用
编译和函数使用问题
请教老师关于000和888的使用问题
currenttime和time差异巨大,不知道问题出在哪
关于OnOrder域和OnPosition的问题

1 如果后一根bar的时间是无效值,并且,当根bar的日期小于本地日期。

2 一般是图表里最后一根bar的时候,没有下一根bar

3 这种情况很多啊,今天是2025年7月10号,那代码执行到今天以前的任何一天,date都会小于currentdate啊


忘了说了![-1]这种写法是上古时代的语法了,早就已经取消了

👍

原来是上古写法,哈哈哈。谢谢老师的解答,感谢

颇尴尬🤣

If( ( Date[-1] != InvalidInteger  &&  Date != Date[-1] )  ||  ( Date[-1] == InvalidInteger  &&  Date < CurrentDate ) )

只有这一段代码

不知道你看的范例的上下文具体啥场景

第一个条件

不是数据源第一个bar 且 当前bar和前一个bar是不同交易日

要么没考虑夜盘

要么夜盘也清仓


第二个条件

数据源只有一个bar:要么是数据源第一根bar,要么只订阅了一个bar 且 历史bar


两个条件满足一个

先平多单

再开多单

根据你表达的收盘前一定平仓

没看明白这个操作

应该不是官方的范例吧

我学习的案例如下方链接,是一个微信的公众号分享的教学策略,仅供教学使用:

https://mp.weixin.qq.com/s?__biz=MzkwNDY4MTQwMQ==&mid=2247483796&idx=1&sn=44499a7659b647b94ff603f86fd82fc9&chksm=c0820342f7f58a54586e3bc5806d167bf0e799c71b8c1d2be330fb7e2e55b780e8ab4eb2f98f&scene=178&cur_album_id=3405380616391589892&search_click_id=#rd

Date[-1]是后一个Bar的交易日期,而不是前一个Bar的交易日期。

前一个Bar的交易日期是:Date[1]

非常抱歉

date[1]、date[-1]是我搞错了

第一个条件就是

中间bar 且 夜盘清仓


或


第二个条件

最后一个bar 且周末或放假期间?


这段代码有夜盘的bug

也不适合回放模式


等老师回复吧

他是在当前时点回溯历史数据

用于测试策略逻辑和收益情况

并用了向后取值的未来函数


回放模拟的是实时状态


还是按照正常的方式编码

即可回溯

也可交易

还能回放测试

date[-1]这种写法实际上已经取消了

👌

昨晚直接被搞懵了。。。

1 夜盘

2 只订阅了一个bar

3 今天视角下的昨天夜盘

我这边在历史行情回访的模拟实时数据测试的时候发现,不论日盘还是夜盘,最新一根bar上的Date[-1]的取值都是一个很大的Integer,但不是无效值,并且Date一直都等于CurrentDate。另外,策略肯定是要求加载到超过一根bar的行情上

无效值就是很大的值


你说的情况不可能

CurrentDate 是当前时间

Date[-1]是前一个Bar的交易日期

无效值就是很大的值


最新一个Bar的Date

在当前视角

如果是当天就相等

比如凌晨0点后 到 夜里24点前 是相等的

明天白天bar的Date和CurrentDate就是20250710

今天夜盘bar的Date就是20250709

黄金白银原油会跨日



Date[0]/Date[-X]根据bar动态的

CurrentDate永远是电脑最新的日期

Date[-1]是后一个Bar的交易日期,

Date[1]是前一个Bar的交易日期。

无效值InvalidInteger 我print出来、或者commentary出来,结果是N/A。

最新一根bar上的Date[-1]的取值是个能够正常print出来、或者commentary出来的很大的Integer,不会显示N/A。

CurrentDate在历史行情回访的模拟实时数据测试的时候,print出来就会是历史上的电脑日期,而不是真实的电脑日期

回放当然是当时的电脑时期

这都是相对的概念

回放相当于实时行情

最后一个bar的date 当然等于 currentdate

时点不同

视角也不同

是相对的的关系

回放相当于实时行情

最后一个bar的date 当然等于 currentdate

时点不同

视角也不同

是相对的的关系