Skip to content
wondereamer edited this page Jan 8, 2017 · 1 revision

每个策略类必须实现4个接口:on_init, on_symbol, on_bar, on_exit。其中交易相关的买卖函数,查询函数,比如ctx.buy, ctx.cash()等, 只能在on_bar中被调用。系统内部通过调用Context.process_trading_events 来开始一次价格撮合。我们把价格数据分为k线数据和tick数据两类。 两则的撮合机制不一样。

  • k线数据 表示当根k线开盘和收盘时间区间内的open, close, high, low四个价格。系统会分别在开盘时间和收盘时间做一个价格撮合。因此,当根k线的开盘时间 才是“当前”时间。收盘时间的价格撮合是未了确保交易能在当前k线时间区间内成交,但对on_bar是不可见的,它只能对应到当根k线的开盘时间,并且 任何交易最早只能在收盘时间成交。假设我们当前在第i根k线上,那么以下情况不存引用未来数据的问题:

    • 使用了open数据,
    • 引用了第j(j<i)根k线的数据
  • tick数据(待实现) 只有一个时间点,任何交易最早只能在下个时间点成交,以下情况不存在引用未来数据问题:

    • 引用当前数据
    • 引用前面的tick数据

上一节 交易上下文      下一节 时序变量