CzscTrader

class czsc.traders.CzscTrader(bg: BarGenerator | None = None, positions: List[Position] | None = None, ensemble_method: AnyStr | Callable = 'mean', **kwargs)[source]

Bases: CzscSignals

缠中说禅技术分析理论之多级别联立交易决策类(支持多策略独立执行)

Attributes Summary

pos_changed

判断仓位是否发生变化

Methods Summary

get_ensemble_pos([method])

获取多个仓位的集成仓位

get_ensemble_weight([method])

获取 CzscTrader 中所有 positions 按照 method 方法集成之后的权重

get_position(name)

获取指定名称的仓位策略对象

on_bar(bar)

输入基础周期已完成K线,更新信号,更新仓位

on_sig(sig)

通过信号字典直接交易

take_snapshot([file_html, width, height])

获取快照

update(bar)

输入基础周期已完成K线,更新信号,更新仓位

weight_backtest(**kwargs)

执行仓位集成权重的回测

Attributes Documentation

pos_changed

判断仓位是否发生变化

Returns:

True/False

Methods Documentation

get_ensemble_pos(method: AnyStr | Callable | None = None) float[source]

获取多个仓位的集成仓位

Parameters:

method

多个仓位集成一个仓位的方法,可选值 mean, vote, max;也可以传入一个回调函数

假设有三个仓位对象,当前仓位分别是 1, 1, -1 mean - 平均仓位,pos = np.mean([1, 1, -1]) = 0.33 vote - 投票表决,pos = 1 max - 取最大,pos = 1

对于传入回调函数的情况,输入是 self.positions

Returns:

pos, 集成仓位

get_ensemble_weight(method: AnyStr | Callable | None = None)[source]

获取 CzscTrader 中所有 positions 按照 method 方法集成之后的权重

Parameters:
  • method

    str or callable 集成方法,可选值包括:’mean’, ‘max’, ‘min’, ‘vote’ 也可以传入自定义的函数,函数的输入为 dict,key 为 position.name,value 为 position.pos, 样例输入:

    {‘多头策略A’: 1, ‘多头策略B’: 1, ‘空头策略A’: -1}

  • kwargs

Returns:

pd.DataFrame columns = [‘dt’, ‘symbol’, ‘weight’, ‘price’]

get_position(name: str) Position | None[source]

获取指定名称的仓位策略对象

Parameters:

name – 仓位名称

Returns:

Position

on_bar(bar: RawBar) None[source]

输入基础周期已完成K线,更新信号,更新仓位

Parameters:

bar – 基础周期已完成K线

Returns:

None

on_sig(sig: dict) None[source]

通过信号字典直接交易

主要用于快速回测场景

Parameters:

sig – 信号字典

Returns:

None

take_snapshot(file_html=None, width: str = '1400px', height: str = '580px')[source]

获取快照

Parameters:
  • file_html – 交易快照保存的 html 文件名

  • width – 图表宽度

  • height – 图表高度

Returns:

update(bar: RawBar) None[source]

输入基础周期已完成K线,更新信号,更新仓位

Parameters:

bar – 基础周期已完成K线

Returns:

None

weight_backtest(**kwargs)[source]

执行仓位集成权重的回测

Parameters:

kwargs

  • method: str or callable,集成方法,参考 get_ensemble_weight 方法

  • digits: int,权重小数点后保留的位数,例如 2 表示保留两位小数

  • fee_rate: float,手续费率,例如 0.0002 表示万二

  • res_path: str,回测结果保存路径

Returns:

回测结果