CzscStrategyBase
- class czsc.strategies.CzscStrategyBase(**kwargs)[source]
Bases:
ABC
择时交易策略的要素:
交易品种以及该品种对应的参数
K线周期列表
交易信号参数配置
持仓策略列表
Attributes Summary
基础 K 线周期
K线周期列表
交易信号参数配置
排好序的 K 线周期列表
交易标的
所有持仓策略中的交易信号列表
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])从配置文件中加载持仓策略
持仓策略列表
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:
持仓策略列表
- 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: