KlineChart

class czsc.KlineChart(n_rows=3, **kwargs)[source]

Bases: object

K线绘图工具类

plotly 参数详解: https://www.jianshu.com/p/4f4daf47cc85

Methods Summary

add_bar_indicator(x, y, name, row[, color])

绘制条形图指标

add_indicator(dt[, scatters, scatter_names, ...])

绘制曲线叠加bar型指标

add_kline(kline[, name])

绘制K线

add_macd(kline[, row])

绘制MACD图

add_marker_indicator(x, y, name, row[, text])

绘制标记类指标

add_scatter_indicator(x, y, name, row[, text])

绘制线性/离散指标

add_sma(kline[, row, ma_seq, visible])

绘制均线图

add_vol(kline[, row])

绘制成交量图

open_in_browser([file_name])

在浏览器中打开

Methods Documentation

add_bar_indicator(x, y, name: str, row: int, color=None, **kwargs)[source]

绘制条形图指标

绘图API文档:https://plotly.com/python-api-reference/generated/plotly.graph_objects.Bar.html

函数执行逻辑:

  1. 获取自定义参数 hover_template、show_legend、visible 和 base。这些参数分别对应于鼠标悬停时显示的模板、是否显示图例、是否可见和基线(默认为 True)。

  2. 如果 color 参数为空,则使用 self.color_red 作为颜色。

  3. 使用给定的 x、y 数据创建一个 go.Bar 对象(条形图),并传入以下参数:
    • x: 指标的x轴数据

    • y: 指标的y轴数据

    • marker_line_color: 条形边框的颜色

    • marker_color: 条形填充的颜色

    • name: 指标名称

    • showlegend: 是否显示图例

    • hovertemplate: 鼠标悬停时显示的模板

    • visible: 是否可见

    • base: 基线,默认为 True

  4. 调用 self.fig.add_trace 方法将创建的 go.Bar 对象添加到指定子图中,并更新所有 traces 的 X 轴属性为 “x1”。

Parameters:
  • x – 指标的x轴

  • y – 指标的y轴

  • name – 指标名称

  • row – 放入第几个子图

  • color – 指标的颜色,可以是单个颜色,也可以是一个列表,列表长度和y的长度一致,指示每个y的颜色 比如:color = ‘rgba(249,41,62,0.7)’ 或者 color = [‘rgba(249,41,62,0.7)’, ‘rgba(0,170,59,0.7)’]

  • kwargs

Returns:

add_indicator(dt, scatters: list | None = None, scatter_names: list | None = None, bar=None, bar_name='', row=4, **kwargs)[source]

绘制曲线叠加bar型指标

  1. 获取自定义参数 line_width,默认值为 0.6。

  2. 如果 scatters(列表)不为空,则遍历 scatters 中的所有散点数据:
    • 对于每个散点数据,调用 add_scatter_indicator 方法将其绘制为折线图。传递以下参数:
      • x: 日期时间数据

      • y: 散点数据

      • name: 图例名称,来自 scatter_names 列表

      • row: 指定要添加指标的子图行数,默认值为 4

      • show_legend: 是否显示图例,默认值为 False

      • line_width: 线宽,默认值为 0.6

  3. 如果 bar 不为空,则使用 np.where 函数根据 bar 值大于零的情况设置颜色:大于零使用红色(self.color_red),否则使用绿色(self.color_green)。

  4. 调用 add_bar_indicator 方法将 bar 绘制为柱状图。传递以下参数:
    • x: 日期时间数据

    • y: bar 数据

    • name: 图例名称,为传入的 bar_name 参数

    • row: 指定要添加指标的子图行数,默认值为 4

    • color: 根据上一步计算的颜色设置

    • show_legend: 是否显示图例,默认值为 False

add_kline(kline: DataFrame, name: str = 'K线', **kwargs)[source]

绘制K线

函数执行逻辑:

  1. 检查 kline 数据框是否包含 ‘text’ 列。如果没有,则添加一个空字符串列。

  2. 使用 go.Candlestick 创建一个K线图,并传入以下参数:
    • x: 日期时间数据

    • open, high, low, close: 开盘价、最高价、最低价和收盘价

    • text: 显示在每个 K 线上的文本标签

    • name: 图例名称

    • showlegend: 是否显示图例

    • increasing_line_color 和 decreasing_line_color: 上涨时的颜色和下跌时的颜色

    • increasing_fillcolor 和 decreasing_fillcolor: 上涨时填充颜色和下跌时填充颜色

    • **kwargs: 可以传递其他自定义参数给 Candlestick 函数。

  3. 将创建的烛台图对象添加到 self.fig 中的第一个子图(row=1, col=1)。

  4. 使用 fig.update_traces 更新所有 traces 的 xaxis 属性为 “x1”。

add_macd(kline: DataFrame, row=3, **kwargs)[source]

绘制MACD图

函数执行逻辑:

  1. 首先,复制输入的 kline 数据框到 df。

  2. 获取自定义参数 fastperiod、slowperiod 和 signalperiod。这些参数分别对应于计算 MACD 时使用的快周期、慢周期和信号周期,默认值分别为 12、26 和 9。

  3. 使用 talib 库的 MACD 函数计算 MACD 值(diff, dea, macd)。

  4. 创建一个名为 macd_colors 的 numpy 数组,根据 macd 值大于零的情况设置颜色:大于零使用红色(self.color_red),否则使用绿色(self.color_green)。

  5. 调用 add_scatter_indicator 方法将 diff 和 dea 绘制为折线图。传递以下参数:
    • x: 日期时间数据

    • y: diff 或 dea 数据

    • name: 图例名称,分别为 “DIFF” 和 “DEA”

    • row: 指定要添加指标的子图行数,默认值为 3

    • line_color: 线的颜色,分别为 ‘white’ 和 ‘yellow’

    • show_legend: 是否显示图例,默认值为 False

    • line_width: 线宽,默认值为 0.6

  6. 调用 add_bar_indicator 方法将 macd 绘制为柱状图。传递以下参数:
    • x: 日期时间数据

    • y: macd 数据

    • name: 图例名称,为 “MACD”

    • row: 指定要添加指标的子图行数,默认值为 3

    • color: 根据 macd_colors 设置颜色

    • show_legend: 是否显示图例,默认值为 False

add_marker_indicator(x, y, name: str, row: int, text=None, **kwargs)[source]

绘制标记类指标

函数执行逻辑:

  1. 获取自定义参数 line_color、line_width、hover_template、show_legend 和 visible。

    这些参数分别对应于折线颜色、宽度、鼠标悬停时显示的模板、是否显示图例和是否可见。

  2. 使用给定的 x、y 数据创建一个 go.Scatter 对象(散点图),并传入以下参数:
    • x: 指标的x轴数据

    • y: 指标的y轴数据

    • name: 指标名称

    • text: 文本说明

    • line_width: 线宽

    • line_color: 线颜色

    • hovertemplate: 鼠标悬停时显示的模板

    • showlegend: 是否显示图例

    • visible: 是否可见

    • opacity: 透明度

    • mode: 绘制模式,为 ‘markers’ 表示只绘制标记

    • marker: 标记的样式,包括大小、颜色和符号

  3. 调用 self.fig.add_trace 方法将创建的 go.Scatter 对象添加到指定子图中,并更新所有 traces 的 X 轴属性为 “x1”。

Parameters:
  • x – 指标的x轴

  • y – 指标的y轴

  • name – 指标名称

  • row – 放入第几个子图

  • text – 文本说明

  • kwargs

Returns:

add_scatter_indicator(x, y, name: str, row: int, text=None, **kwargs)[source]

绘制线性/离散指标

绘图API文档:https://plotly.com/python-api-reference/generated/plotly.graph_objects.Scatter.html

函数执行逻辑:

  1. 获取自定义参数 mode、hover_template、show_legend、opacity 和 visible。这些参数分别对应于绘图模式、鼠标悬停时显示的模板、是否显示图例、透明度和是否可见。

  2. 使用给定的 x、y 数据创建一个 go.Scatter 对象(散点图),并传入以下参数:
    • x: 指标的x轴数据

    • y: 指标的y轴数据

    • name: 指标名称

    • text: 文本说明

    • mode: 绘制模式,默认为 ‘text+lines’,表示同时绘制文本和线条

    • hovertemplate: 鼠标悬停时显示的模板

    • showlegend: 是否显示图例

    • visible: 是否可见

    • opacity: 透明度

  3. 调用 self.fig.add_trace 方法将创建的 go.Scatter 对象添加到指定子图中,并更新所有 traces 的 X 轴属性为 “x1”。

Parameters:
  • x – 指标的x轴

  • y – 指标的y轴

  • name – 指标名称

  • row – 放入第几个子图

  • text – 文本说明

  • kwargs

Returns:

add_sma(kline: DataFrame, row=1, ma_seq=(5, 10, 20), visible=False, **kwargs)[source]

绘制均线图

函数执行逻辑:

  1. 复制输入的 kline 数据框到 df。

  2. 获取自定义参数 line_width,默认值为 0.6。

  3. 遍历 ma_seq 中的所有均线周期:
    • 对每个周期使用 pandas rolling 方法计算收盘价的移动平均线。

    • 调用 add_scatter_indicator 方法将移动平均线数据绘制为折线图。传递以下参数:
      • x: 日期时间数据

      • y: 移动平均线数据

      • name: 图例名称,格式为 “MA{ma}”,其中 {ma} 是当前的均线周期。

      • row: 指定要添加指标的子图行数,默认值为 1

      • line_width: 线宽,默认值为 0.6

      • visible: 是否可见,默认值为 False

      • show_legend: 是否显示图例,默认值为 True

add_vol(kline: DataFrame, row=2, **kwargs)[source]

绘制成交量图

函数执行逻辑:

  1. 首先,复制输入的 kline 数据框到 df。

  2. 使用 np.where 函数根据收盘价(df[‘close’])和开盘价(df[‘open’])之间的关系为 df 创建一个新列 ‘vol_color’。 如果收盘价大于开盘价,则使用红色(self.color_red),否则使用绿色(self.color_green)。

  3. 调用 add_bar_indicator 方法绘制成交量图。传递以下参数:
    • x: 日期时间数据

    • y: 成交量数据

    • color: 根据 ‘vol_color’ 列的颜色

    • name: 图例名称

    • row: 指定要添加指标的子图行数,默认值为 2

    • show_legend: 是否显示图例,默认值为 False

open_in_browser(file_name: str | None = None, **kwargs)[source]

在浏览器中打开