BarGenerator

class czsc.utils.BarGenerator(base_freq: str, freqs: List[str], max_count: int = 5000, market='默认')[source]

Bases: object

Attributes Summary

version

Methods Summary

init_freq_bars(freq, bars)

初始化某个周期的K线序列

update(bar)

更新各周期K线

Attributes Documentation

version = 'V231008'

Methods Documentation

init_freq_bars(freq: str, bars: List[RawBar])[source]

初始化某个周期的K线序列

函数计算逻辑:

  1. 首先,它断言`freq`必须是`self.bars`的键之一。如果`freq`不在`self.bars`的键中,代码会抛出一个断言错误。

  2. 然后,它断言`self.bars[freq]`必须为空。如果`self.bars[freq]`不为空,代码会抛出一个断言错误,并显示一条错误消息。

  3. 如果以上两个断言都通过,它会将`bars`赋值给`self.bars[freq]`,从而初始化指定频率的K线序列。

  4. 最后,它会将`bars`列表中的最后一个`RawBar`对象的`symbol`属性赋值给`self.symbol`。

Parameters:
  • freq – 周期名称

  • bars – K线序列

update(bar: RawBar) None[source]

更新各周期K线

函数计算逻辑:

  1. 首先,它获取基准频率`base_freq`,并断言`bar`的频率值等于`base_freq`。

  2. 然后,它将`bar`的符号和日期时间设置为`self.symbol`和`self.end_dt`。

  3. 接下来,它检查是否已经有一个与`bar`日期时间相同的K线存在于`self.bars[base_freq]`中。

    如果存在,它会记录一个警告并返回,不进行任何更新。

  4. 如果不存在重复的K线,它会遍历`self.bars`的所有键(即所有的频率),并对每个频率调用`self._update_freq`方法来更新该频率的K线。

  5. 最后,它会限制在内存中的K线数量,确保每个频率的K线数量不超过`self.max_count`。

Parameters:

bar – 必须是已经结束的Bar

Returns:

None