请教一个SetBasePeriod的机制问题

这是我订阅数据源的代码

           SubscribeBar("SA888.CZCE", "1d", start_time);

           SubscribeBar("SA888.CZCE", "1h", start_time);

           SubscribeBar("SA888.CZCE", "15m", start_time);

           SetBasePeriod("1m");

在15m分钟的图层中,计算1d这个图层的macd代码如下:

               Data[0].MACDDiff = Data[0].XAverage(Data[0].Close, 12 ) - Data[0].XAverage(Data[0].Close, 26 ) ;    

               Data[0].AvgMACD = Data[0].XAverage(Data[0].MACDDiff, 9);

               Data[0].MACDValue = 2 * (Data[0].MACDDiff - Data[0].AvgMACD);

在回测中,我设置了,SetBasePeriod("1m") 周期;

所以这里Data[0].Close 相较于实盘交易是不是只多取了1分钟的未来收盘价格,而不是取了当天的收盘价;



请教版主个基本机制问题
关于setbaseperiod的几个疑问
请教个开平仓信号发生机制的问题
使用SetBasePeriod函数的K线显示与使用问题
请教事件域onbaropen运行机制
关于SetBasePeriod(\\\"5m\\\")
请教函数应用的一个问题
请教一个代码问题
setbaseperiod只是用来做图表回测的吧?
A函数发单机制问题

如果你设置了SetBasePeriod("1m")

那么data0图层,也就是日线,历史k线每根不再只是执行一遍,而是有多少个一分钟就执行多少次。每次执行的时候,按对应的每分钟的bar数据执行。但是,这个bar上最后的执行结果,其实还是按收盘状态的执行结果,会覆盖的。

有区别的就是,如果你是全局变量global,做了一些计数器之类的东西,那计数器结果可能就完全不一样了

你可以自己写个demo试试效果

又在加班

感谢解释,假如自动交易的时候也支持SetBasePeriod("1m"),然后按照这个周期触发onbar,那是不是就可以保证回测和实盘运行的结果永远一致了。

......自动交易的时候是按tick执行onbar的

设不设置setbaseperiod都按tick

“在15m分钟的图层中,计算1d这个图层的macd” 这句是啥意思

data0是什么周期呀

哪个图层是1h呀

15分钟k线级别中,获取日线级别的macd值

但是你的代码是同一图层的东西呀


单看你这句话 好像也不对 我觉得应该是取了15M的未来数据

即使你是1M运行一次,但在15M级别K线内部运行的15次是前后覆盖的关系