CzscStrategyBase

class czsc.strategies.CzscStrategyBase(**kwargs)[source]

Bases: ABC

择时交易策略的要素:

  1. 交易品种以及该品种对应的参数

  2. K线周期列表

  3. 交易信号参数配置

  4. 持仓策略列表

Attributes Summary

base_freq

基础 K 线周期

freqs

K线周期列表

signals_config

交易信号参数配置

sorted_freqs

排好序的 K 线周期列表

symbol

交易标的

unique_signals

所有持仓策略中的交易信号列表

Methods Summary

backtest(bars, **kwargs)

check(bars, res_path, **kwargs)

检查交易策略中的信号是否正确

dummy(sigs, **kwargs)

使用信号缓存进行策略回测

init_bar_generator(bars, **kwargs)

使用策略定义初始化一个 BarGenerator 对象

init_trader(bars, **kwargs)

使用策略定义初始化一个 CzscTrader 对象

load_positions(files[, check])

从配置文件中加载持仓策略

positions()

持仓策略列表

replay(bars, res_path, **kwargs)

交易策略交易过程回放

save_positions(path)

保存持仓策略配置

Attributes Documentation

base_freq

基础 K 线周期

freqs

K线周期列表

signals_config

交易信号参数配置

sorted_freqs

排好序的 K 线周期列表

symbol

交易标的

unique_signals

所有持仓策略中的交易信号列表

Methods Documentation

backtest(bars: List[RawBar], **kwargs) CzscTrader[source]
check(bars: List[RawBar], res_path, **kwargs)[source]

检查交易策略中的信号是否正确

Parameters:
  • bars – 基础周期K线

  • res_path – 结果目录

  • kwargs – bg 已经初始化好的BarGenerator对象,如果传入了bg,则忽略sdt和n参数 sdt 初始化开始日期 n 初始化最小K线数量

Returns:

dummy(sigs: List[dict], **kwargs) CzscTrader[source]

使用信号缓存进行策略回测

Parameters:

sigs – 信号缓存,一般指 generate_czsc_signals 函数计算的结果缓存

Returns:

完成策略回测后的 CzscTrader 对象

init_bar_generator(bars: List[RawBar], **kwargs)[source]

使用策略定义初始化一个 BarGenerator 对象

函数执行逻辑:

  • 该方法的目的是使用策略定义初始化一个BarGenerator对象。BarGenerator是用于生成K线数据的类。

  • 参数bars表示基础周期的K线数据,**kwargs用于接收额外的关键字参数。

  • 首先,方法获取了基础K线的频率,并检查了是否已经有一个初始化好的BarGenerator对象传入。

  • 然后,根据基础频率是否在排序后的频率列表中,确定要使用的频率列表。

  • 如果没有传入BarGenerator对象,则根据传入的基础K线数据和其他参数创建一个新的BarGenerator对象, 并使用部分K线数据初始化它。余下的K线数据将用于trader的初始化区间。

  • 如果传入了BarGenerator对象,则会做一些断言检查,确保传入的基础K线数据与已有的BarGenerator对象的基础周期一致, 并且BarGenerator的end_dt是datetime类型。然后,筛选出在BarGenerator的end_dt之后的K线数据。

  • 最后,返回BarGenerator对象和余下的K线数据。

Parameters:
  • bars – 基础周期K线

  • kwargs – bg 已经初始化好的BarGenerator对象,如果传入了bg,则忽略sdt和n参数 sdt 初始化开始日期 n 初始化最小K线数量

Returns:

init_trader(bars: List[RawBar], **kwargs) CzscTrader[source]

使用策略定义初始化一个 CzscTrader 对象

注意: 这里会将所有持仓策略在 sdt 之后的交易信号计算出来并缓存在持仓策略实例内部,所以初始化的过程本身也是回测的过程。

函数执行逻辑:

  • 首先,它通过调用init_bar_generator方法获取已经初始化好的BarGenerator对象和余下的K线数据。

  • 然后,它创建一个CzscTrader对象,将BarGenerator对象、持仓策略的深拷贝、交易信号配置的深拷贝等参数传递给CzscTrader的构造函数。

  • 接着,使用余下的K线数据对CzscTrader对象进行初始化,通过调用trader.on_bar(bar)方法处理每一根K线数据。

  • 最后,返回初始化完成的CzscTrader对象。

Parameters:
  • bars – 基础周期K线

  • kwargs – bg 已经初始化好的BarGenerator对象,如果传入了bg,则忽略sdt和n参数 sdt 初始化开始日期 n 初始化最小K线数量

Returns:

完成策略初始化后的 CzscTrader 对象

load_positions(files: List, check=True) List[Position][source]

从配置文件中加载持仓策略

Parameters:
  • files – 以json格式保存的持仓策略文件列表

  • check – 是否校验 MD5 值,默认为 True

Returns:

持仓策略列表

abstract positions() List[Position][source]

持仓策略列表

replay(bars: List[RawBar], res_path, **kwargs)[source]

交易策略交易过程回放

函数执行逻辑:

  • 该方法用于交易策略交易过程的回放。它接受基础周期的K线数据、结果目录以及额外的关键字参数作为输入。

  • 首先,它检查refresh参数,如果为True,则使用shutil.rmtree删除已存在的结果目录。

  • 然后,它检查结果目录是否已存在,并且是否允许覆盖。如果目录已存在且不允许覆盖,则记录一条警告信息并返回。

  • 通过调用os.makedirs创建结果目录,确保目录的存在。

  • 接着,调用init_bar_generator方法初始化BarGenerator对象,并进行相关的初始化操作。

  • 创建一个CzscTrader对象,并将初始化好的BarGenerator对象、持仓策略的深拷贝、交易信号配置的深拷贝等参数传递给CzscTrader的构造函数。

  • 为每个持仓策略创建相应的目录。

  • 遍历K线数据,调用trader.on_bar(bar)方法处理每一根K线数据。

  • 在每根K线数据处理完成后,检查每个持仓策略是否有操作,并且操作的时间是否与当前K线的时间一致。

    如果有操作,则生成相应的HTML文件名,并调用trader.take_snapshot(file_html)方法生成交易快照。

  • 最后,遍历每个持仓策略,记录其评估信息,包括多空合并表现、多头表现、空头表现等。

Parameters:
  • bars – 基础周期K线

  • res_path – 结果目录

  • kwargs – bg 已经初始化好的BarGenerator对象,如果传入了bg,则忽略sdt和n参数 sdt 初始化开始日期 n 初始化最小K线数量 refresh 是否刷新结果目录

Returns:

save_positions(path)[source]

保存持仓策略配置

Parameters:

path – 结果路径

Returns:

None