onbarclose为什么会在刚开盘执行

我的程序都是写在onbarclose里的,每120分钟一根K线,设置了

timePoint=[0.1459,0.2259];

SetTriggerBarClose(timePoint);

按说应该有3个执行时间点,分别是22:59,    11:15,  14:59,但是有个单子在晚上21点执行了,不知道什么原因。

并且特别奇怪的是,图表上并没有交易信号。

监视器里当时也看不到这个 不同步的单子,后来把自动执行关掉,重新启动自动交易后,能看到这个不同步的单。


怀疑,是不是在集合竞价时执行了




onbaropen和onbarclose为什么不执行呢?
为什么这个策略刚买就平仓
OnBarClose每天上午9点开盘时,第一个周期每个Tick都执行问题
OnBarClose(ArrayRef<Integer> indexs)//中午,下午收盘前几秒有信号就执行吗?
多周期在OnBarClose内的执行问题
请教:ONBARCLOSE函数,在当天收盘的最后一根K线时不会执行,而要等到明日或晚盘开盘的那根K线才执行的问题
【不能回复重发】OnBarClose每天上午9点开盘时,第一个周期每个Tick都执行问题
怎么实现每根Bar结束前2秒触发ONbarclose执行
onbarclose应用实例好像不执行
在OnBarClose中编写的交易代码,却在bar开始时执行,这是什么原因

如果不设置SetTriggerBarClose,他的执行时间不是临近收盘,而是开盘

SetTriggerBarClose(timePoint); 你set后onbarclose会提前操作啊

然后指令要用图表的,就不会出现下单问题

提前操作,也不应该是刚刚开盘就操作吧?

运行的K线是2小时的

我运行的是你给的这个代码,里面没有A函数:

//------------------------------------------------------------------------

// 简称: test_0511_2023


// 名称:


// 类别: 公式应用


// 类型: 用户应用


// 输出: Void


//------------------------------------------------------------------------


Params


//此处添加参数




Vars

Array<Numeric> timePoint;

//此处添加变量


Defs


//此处添加公式函数


Events


//此处实现事件函数


//初始化事件函数,策略运行期间,首先运行且只有一次


OnReady()


{


}


//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组


onbarclose(ArrayRef<Integer> indexs)


{


buy(1,close);


print(text(SystemDateTime));


}

\"\"

晚上开盘时候执行了……就应该这样吗?



你的公式有A函数下单吗

我测试结果

首先图表用onbarclose交易是没有问题的

设置提前触发,第二天再触发,只是再执行一下上个bar,不会重复下单

那么如果有A函数或者读写数据库逻辑的话 可能会有混乱

所以我最近的课上依旧建议围绕onbar操作,onbarclose我建议纯图表

如果写到onbar里,如果不用系统时间,怎么实现在在临近收盘时候进行判断和操作?

我能想到的办法:再增加一根1分钟线的数据源,但这个周期太小了,大周期一根线对应了120根线,不太方便看。

老师还有更好的办法吗?

今天帮你测一下

王老师好,您测试的情况如何?

你是否是图表交易

可以写个简单的程序测试

//------------------------------------------------------------------------

// 简称: test_0511_2023

// 名称:

// 类别: 公式应用

// 类型: 用户应用

// 输出: Void

//------------------------------------------------------------------------

Params

//此处添加参数


Vars

//此处添加变量

Defs

//此处添加公式函数

Events

//此处实现事件函数

//初始化事件函数,策略运行期间,首先运行且只有一次

OnInit()

{

}

//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组

onbarclose(ArrayRef<Integer> indexs)

{

buy(1,close);

print(text(SystemDateTime));

}



//------------------------------------------------------------------------

// 编译版本 2023/05/11 095104

// 版权所有 wangkaiming

// 更改声明 TradeBlazer Software保留对TradeBlazer平台

// 每一版本的TradeBlazer公式修改和重写的权利

//------------------------------------------------------------------------

运行了您发的这段代码,同时运行了4个品种。data0是120分钟,data1是日线。在策略交易里运行的,应该也是图表交易吧?

下面的截图是从策略交易窗口,点开K线图,看到的打印结果

建仓时间是在还没开盘,刚开始运行程序的时候。

打印的系统时间是刚开盘的时间。

data-href=data-href=data-href=

建议你再好好看看onbarclose的驱动机制

或者直接发代码

这样子描述分析不了

运行了您发的这段代码,同时运行了4个品种。在策略交易里运行的,应该也是图表交易吧?

下面的截图是从策略交易窗口,点开K线图,看到的打印结果

建仓时间是在还没开盘,刚开始运行程序的时候。

打印的系统时间是刚开盘的时间。

\"\"

\"\"