请问,vnpy支持直接输入日线数据,进行日线回测吗?没有分钟级别的数据
请问,vnpy支持直接输入日线数据,进行日线回测吗?没有分钟级别的数据
可以的,interval选1d就行
谢谢。请问有这种直接读取日线案例的简单回测案例代码吗?
和其他的一样,就在导入数据的时候"周期"选"daily",回测的时候"K线周期"选“d”就可以了。示例策略的话,cta的在vnpy.app.cta_strategy.strategies里
xiaohe wrote:
和其他的一样,就在导入数据的时候"周期"选"daily",回测的时候"K线周期"选“d”就可以了。示例策略的话,cta的在vnpy.app.cta_strategy.strategies里
这样可以吗? 理论上回测调用的是on_bar函数,实盘调用的是on_window_bar函数,并不匹配啊
请问如果选的是DAILY的回测,那么每个day bar检测到的信号,sellbuy这种是在第二天才能交易(下一个bar)吗?还想请问一般daily的回测是当天开盘还是收盘判断,交易的话又是什么时候执行呢?谢谢!
在VeighNa的CTA策略回测中,对于日线(DAILY)级别的回测,信号检测和交易执行的时间点如下:
信号检测:
策略通常会在每个日线Bar的收盘时进行信号检测。也就是说,策略会根据当天的收盘价、最高价、最低价等数据来计算技术指标,并判断是否触发交易信号。
交易执行:
检测到的交易信号(如买入或卖出)会在下一个交易日的开盘时执行。这是因为回测引擎默认在收到一个Bar后,会在下一个Bar的开盘时执行交易。这种设计是为了模拟实盘中无法在当天收盘后立即交易的情况。
交易时间点:
假设策略在2023年10月1日的收盘时检测到一个买入信号,那么实际的买入操作会在2023年10月2日的开盘时执行。
这种设计更贴近实际交易场景,避免了在收盘后无法立即交易的限制。
那请问如果是下一个交易日开盘交易,是以第二天的开盘价成交还是头一天的收盘价成交呢?我看源代码好像都是close,也就是头一天的收盘价,但是收盘价用来计算信号等,无法用这个价格成交了啊。谢谢
在VeighNa的CTA策略回测中,交易执行是基于K线数据的,具体规则如下:
信号计算:策略通常使用前一根K线的收盘价(close
)来计算交易信号和指标。例如,在DualThrustStrategy
中,会使用前一根K线的收盘价来计算当日的交易通道上下轨。
交易执行:在回测中,策略的委托会在下一根K线的开盘价(open
)处执行。也就是说,如果策略在当前K线收盘时发出买入信号,那么委托会在下一根K线的开盘价处成交。
成交规则:回测引擎会模拟实际市场的撮合机制,确保委托在下一根K线的开盘价处成交。这种设计是为了更贴近实际交易中的执行情况,因为在实际交易中,策略发出的委托通常会在下一个交易时段(如次日开盘)执行。
源码参考:如果你对具体的成交逻辑感兴趣,可以查看cross_limit_order
函数的源码。这个函数负责在回测中处理限价单的撮合逻辑,确保委托在下一根K线的开盘价处成交。
因此,在回测中,虽然策略使用前一根K线的收盘价来计算信号,但实际的交易执行是基于下一根K线的开盘价的。这种设计确保了回测结果更贴近实际交易中的执行情况。
如果你在代码中看到使用close
价格,那通常是指信号计算或指标计算的部分,而不是实际的交易执行部分。实际的交易执行是基于下一根K线的开盘价的。