VeighNa量化社区
你的开源社区量化交易平台 | vn.py | vnpy
Member
avatar
加入于:
帖子: 57
声望: 1

请问,vnpy支持直接输入日线数据,进行日线回测吗?没有分钟级别的数据

Member
avatar
加入于:
帖子: 5399
声望: 327

可以的,interval选1d就行

Member
avatar
加入于:
帖子: 57
声望: 1

谢谢。请问有这种直接读取日线案例的简单回测案例代码吗?

Member
avatar
加入于:
帖子: 5399
声望: 327

和其他的一样,就在导入数据的时候"周期"选"daily",回测的时候"K线周期"选“d”就可以了。示例策略的话,cta的在vnpy.app.cta_strategy.strategies里

Member
avatar
加入于:
帖子: 6
声望: 0

xiaohe wrote:

和其他的一样,就在导入数据的时候"周期"选"daily",回测的时候"K线周期"选“d”就可以了。示例策略的话,cta的在vnpy.app.cta_strategy.strategies里
这样可以吗? 理论上回测调用的是on_bar函数,实盘调用的是on_window_bar函数,并不匹配啊

Member
avatar
加入于:
帖子: 5399
声望: 327

可参考https://www.vnpy.com/forum/topic/5758-zhi-jie-xiang-shu-ju-ku-zhong-dao-ru-ri-xian-de-shu-ju-zai-jia-zai-li-shi-shu-ju-shi-ke-yi-shi-bie-ma-huan-shi-bi-xu-de-dao-ru-fen-zhong-shu-ju-ce-lue-zi-ji-he-cheng-ri-xian-shu-ju?page=1#pid20136

Member
avatar
加入于:
帖子: 19
声望: 0

请问如果选的是DAILY的回测,那么每个day bar检测到的信号,sellbuy这种是在第二天才能交易(下一个bar)吗?还想请问一般daily的回测是当天开盘还是收盘判断,交易的话又是什么时候执行呢?谢谢!

Super Moderator
avatar
加入于:
帖子: 74
声望: 7

在VeighNa的CTA策略回测中,对于日线(DAILY)级别的回测,信号检测和交易执行的时间点如下:

  1. 信号检测
    策略通常会在每个日线Bar的收盘时进行信号检测。也就是说,策略会根据当天的收盘价、最高价、最低价等数据来计算技术指标,并判断是否触发交易信号。

  2. 交易执行
    检测到的交易信号(如买入或卖出)会在下一个交易日的开盘时执行。这是因为回测引擎默认在收到一个Bar后,会在下一个Bar的开盘时执行交易。这种设计是为了模拟实盘中无法在当天收盘后立即交易的情况。

  3. 交易时间点

    • 信号检测时间:当天收盘时。
    • 交易执行时间:下一个交易日的开盘时。

示例说明

假设策略在2023年10月1日的收盘时检测到一个买入信号,那么实际的买入操作会在2023年10月2日的开盘时执行。

总结

  • 信号检测:每个日线Bar的收盘时。
  • 交易执行:下一个交易日的开盘时。

这种设计更贴近实际交易场景,避免了在收盘后无法立即交易的限制。

Member
avatar
加入于:
帖子: 19
声望: 0

那请问如果是下一个交易日开盘交易,是以第二天的开盘价成交还是头一天的收盘价成交呢?我看源代码好像都是close,也就是头一天的收盘价,但是收盘价用来计算信号等,无法用这个价格成交了啊。谢谢

Super Moderator
avatar
加入于:
帖子: 74
声望: 7

在VeighNa的CTA策略回测中,交易执行是基于K线数据的,具体规则如下:

  1. 信号计算:策略通常使用前一根K线的收盘价(close)来计算交易信号和指标。例如,在DualThrustStrategy中,会使用前一根K线的收盘价来计算当日的交易通道上下轨。

  2. 交易执行:在回测中,策略的委托会在下一根K线的开盘价(open)处执行。也就是说,如果策略在当前K线收盘时发出买入信号,那么委托会在下一根K线的开盘价处成交。

  3. 成交规则:回测引擎会模拟实际市场的撮合机制,确保委托在下一根K线的开盘价处成交。这种设计是为了更贴近实际交易中的执行情况,因为在实际交易中,策略发出的委托通常会在下一个交易时段(如次日开盘)执行。

  4. 源码参考:如果你对具体的成交逻辑感兴趣,可以查看cross_limit_order函数的源码。这个函数负责在回测中处理限价单的撮合逻辑,确保委托在下一根K线的开盘价处成交。

因此,在回测中,虽然策略使用前一根K线的收盘价来计算信号,但实际的交易执行是基于下一根K线的开盘价的。这种设计确保了回测结果更贴近实际交易中的执行情况。

如果你在代码中看到使用close价格,那通常是指信号计算或指标计算的部分,而不是实际的交易执行部分。实际的交易执行是基于下一根K线的开盘价的。

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】