BarGenerator
- class czsc.BarGenerator(base_freq: str, freqs: List[str], max_count: int = 5000, market='默认')[source]
Bases:
object
Attributes Summary
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线序列
函数计算逻辑:
首先,它断言`freq`必须是`self.bars`的键之一。如果`freq`不在`self.bars`的键中,代码会抛出一个断言错误。
然后,它断言`self.bars[freq]`必须为空。如果`self.bars[freq]`不为空,代码会抛出一个断言错误,并显示一条错误消息。
如果以上两个断言都通过,它会将`bars`赋值给`self.bars[freq]`,从而初始化指定频率的K线序列。
最后,它会将`bars`列表中的最后一个`RawBar`对象的`symbol`属性赋值给`self.symbol`。
- Parameters:
freq – 周期名称
bars – K线序列
- update(bar: RawBar) None [source]
更新各周期K线
函数计算逻辑:
首先,它获取基准频率`base_freq`,并断言`bar`的频率值等于`base_freq`。
然后,它将`bar`的符号和日期时间设置为`self.symbol`和`self.end_dt`。
- 接下来,它检查是否已经有一个与`bar`日期时间相同的K线存在于`self.bars[base_freq]`中。
如果存在,它会记录一个警告并返回,不进行任何更新。
如果不存在重复的K线,它会遍历`self.bars`的所有键(即所有的频率),并对每个频率调用`self._update_freq`方法来更新该频率的K线。
最后,它会限制在内存中的K线数量,确保每个频率的K线数量不超过`self.max_count`。
- Parameters:
bar – 必须是已经结束的Bar
- Returns:
None