委托价问题

在白银连续K线图,1小时级别,计算出空单开仓价格8875(策略为出现信号时,k线闭合前5秒以收盘价交易)

看白银2508对应的K线收盘价也为8875

但是最终委托价却是8798,与计算出来的开单价格不一致,委托时间也不是按策略来的,时间问题分析后原因应该如下:

设定出发时间点代码,无问题

OnBarOpen(ArrayRef<Integer> indexes)
    {
        Numeric advancesec(20); // 提前触发秒数(默认5秒)
        Array<Numeric> timePoint; // 存储触发时间点数组
        
        // 计算触发时间(当前K线结束时间前5秒)
        Numeric ret = DateTimeAdd(RealEndDateTime, -1*advancesec);
        ret = StringToTime(TimeToString(ret)); // 格式化为标准时间
        
        // 调试输出时间信息
        Print("endtime="+text(RealEndDateTime)+" SetTriggerBarClose:" + Text(ret));
        
        // 设置触发时间点
        ArrayPushBack(timePoint, ret);
        SetTriggerBarClose(timePoint); // 注册触发事件
        Commentary("CurrentTimeBarOpen="+Text(CurrentTime));
    }

开仓计算,持仓处理均放在OnBar(ArrayRef<Integer> indexs)部分,

 // 每根K线结束时触发
    OnBar(ArrayRef<Integer> indexs)
    {

这样是不是错的,正常是不是要改成

 // 每根K线结束时触发
    OnBarClose(ArrayRef<Integer> indexs)
    {

麻烦老师帮忙看下这两个问题:

1.实际委托价与计算委托价不一样的原因是什么

2.委托时间与策略不一样的原因是不是因为应该用OnBarClose,实际用了OnBar

委托价问题
关于委托价的问题
委托价设置问题
图标委托价和A函数委托价不同
委托偏移设为0的实际委托价
关于设置委托价买卖的问题
请教老师,用buy(0,close)下单,委托价的问题
关于实盘交易中图表信号价与实际委托价相差很大的问题
关于实盘交易中图表信号价与实际委托价相差很大的问题
为什么没有勾选委托偏移,以开盘价委托下单,实际委托价还是会有偏移?求求解决!!!

你好像完全没搞清楚这个交易是怎么发生的吧?

第一步,先明确这个信号是什么时候发生的。

按tb的信号机制,信号一旦出现,就会马上发委托。所以这个信号发生时间 就是委托时间,那就是6月13日,9点01分45秒。

按照这个委托时间,ag2508合约的价格如果是在8798问题是没有任何问题的。

所以你的核心问题就在于,为什么早上9点01分45秒会出信号?这个信号到底是从那一行代码,哪一个事件域驱动做的?

而你目前提供的线索,无法回答上面这两个问题。

你虽然提供了settriggerbarclose的代码,但是onbarclose里写了什么,onbar里写了什么,都不得而知。


改为onbarclose后,是不是只有在k线闭合前20秒才会判断是否有交易信号呢

那要看你有没有用settrigger了

建议先看一下零基础课程里关于onbarclose事件域的说明

https://video.tbquant.net/video?id=video398

SetTriggerBarClose后

就是onBar机制

我看教程里写的是触发OnBarClose的时间,是我理解有问题吗,这里的OnBarClose不是指的OnBarClose(ArrayRef<Integer> indexs)?


你的理解没问题

但需要更加深入理解

等你猛烈地深入理解了

就发现用这个机制绕来绕去

还需要牵扯三个事件域

又用数组无谓的消耗资源

不如自己用一行代码搞定

我至今都没懂TBQ工程师是怎么这么拧巴的给出这个机制

又半公开的承认没用

不建议使用😂

无论官方还是自己实现这个机制

就是一个advancesec参数+一行代码

如果要只执行一次

就是两个参数+二行代码

你再思考一下

非常简单


我刚开始用这个平台,还不太熟悉,你是指advancesec+要执行的代码,就可以达到在k线闭合前一段时间才执行吗