KB / ARTICLE

图形对象清单

指标文档 · 期货版修订 R1发布于 2026-10-14

本文汇总期魔方指标中所有图形对象的完整参数列表,供开发时查阅。


Line — 线条

当需绘制一条线条时,可以使用线条对象。线条对象绘制的是完全连续的线条。

如果需要绘制不连续的线段,可以使用多段线条(MultiLine)对象。

实例化参数

参数 必填 说明 示例
name 是 图形名称 'line1'
color 是 线条颜色 rgba(255, 0, 0, 1)
line_width 否 线条宽度 5
line_dash 否 虚线间隔 [3, 3]

代码案例

def on_init(self):
    self.line1 = self.Line('line1', 'rgba(255, 0, 0, 1)')
    self.line2 = self.Line('line2', 'rgba(255, 0, 0, 1)', line_width=2, line_dash=[5, 5])

绘制参数

参数 必填 说明 示例
key 是 键名,k 线时间 2025-01-22 09:45:00
value 是 值,价格(在 Y 轴的位置) 5000
def calculate_all(self, data):
    length, datetime_str, open, high, low, close, volume = data
    for i in range(length):
        if i >= 4:
            self.day5_line.set_point(datetime_str[i], sum(close[i - 4 : i + 1]) / 5)

Line


Text — K 线文字标注

当需要在 k 线上绘制文字时,可以使用 k 线文字对象。文字会显示在设定的 k 线顶部或底部。

实例化参数

参数 必填 说明 示例
name 是 图形名称 'text1'

代码案例

def on_init(self):
    self.text1 = self.Text('text1')

绘制参数

参数 必填 说明 示例
key 是 键名,k 线时间 2025-01-22 09:45:00
value 是 值,价格(在 Y 轴的位置) 5000
text 是 文字内容 "B 信号"
color 否 文字颜色 rgb(255,0,0)
font 否 字体 18px 微软雅黑
base_line 否 上下居中方式 0 居中 1 上 2 下
y_move 否 文字 Y 轴显示位置 10
def calculate_all(self, data):
    length, datetime_str, open, high, low, close, volume = data
    self.text_line.set_point(
        datetime_str[-30], 9200, "B", color="rgb(255,0,0)", font="18px 微软雅黑"
    )
    self.text_line.set_point(
        datetime_str[-20], 9220, "S", color="rgb(0,255,0)", font="18px 微软雅黑"
    )

Text


Point — 圆点

当需要在 k 线上绘制圆点时,可以使用圆点对象。

实例化参数

参数 必填 说明 示例
name 是 图形名称 'point1'
color 是 圆点颜色 rgba(255, 0, 0, 1)
bg_color 否 背景颜色 rgba(255, 0, 0, 0.5)
point_radius 否 圆点弧度 8

代码案例

def on_init(self):
    self.point1 = self.Point('point1', 'rgba(255, 0, 0, 1)', bg_color='rgba(255, 0, 0, 1)', point_radius=8)

绘制参数

参数 必填 说明 示例
key 是 键名,k 线时间 2025-01-22 09:45:00
value 是 值,价格(在 Y 轴的位置) 5000
def calculate_all(self, data):
    length, datetime_str, open, high, low, close, volume = data
    self.text_line.set_point(
        datetime_str[-30], 9200, color="rgb(255,0,0)", bg_color="rgb(255,0,0)"
    )

Point


Bar — 柱状图

当需要在副图上绘制柱状图时,可以使用柱状图对象。比如绘制成交量、MACD 这样的指标。

实例化参数

参数 必填 说明 示例
name 是 图形名称 'bar1'
color 是 柱子颜色 rgba(255, 0, 0, 1)
width 否 柱子宽度,默认 K 线柱子宽度 8
type 否 柱子类型 0 实心 1 空心

代码案例

def on_init(self):
    self.bar1 = self.Bar('bar1', 'rgba(255, 0, 0, 1)', width=8, type=1)

绘制参数

参数 必填 说明 示例
key 是 键名,k 线时间 2025-01-22 09:45:00
value1 是 柱子底部值,价格(在 Y 轴的位置) 0
value2 是 柱子顶部值,价格(在 Y 轴的位置) 1000
def calculate_all(self, data):
    length, datetime_str, open, high, low, close, volume = data
    for i in range(length):
        self.bar1.set_point(datetime_str[i], 0, volume[i])

Bar


Polygon — 多边形

多边形由多边形的角构造而成,需要用到角对象 CornerSegment。多边形绘制需要先实例化角对象,然后使用 set_segment() 方法将角对象添加到多边形中。

实例化参数

参数 必填 说明 示例
name 是 图形名称 'triangle'
color 是 多边形颜色 rgba(255, 0, 0, 1)
line_width 否 宽度 8
line_dash 否 虚线间隔 [3, 3]
bg_color 否 背景颜色 rgba(255, 0, 0, 1)

代码案例

def on_init(self):
    self.triangle = self.Polygon('triangle', '#FFCC00')

绘制参数(CornerSegment)

参数 必填 说明 示例
name 是 图形名称 'corner1'
key 是 键名,k 线时间 2025-01-22 09:45:00
value 否 值,价格(在 Y 轴的位置) 5000
color 否 角颜色 rgba(255, 0, 0, 1)
radius 否 半径 10
line_width 否 线宽 5
type 否 绘制类型 0 填充圆 1 只绘制圆边框
def calculate_all(self, data):
    length, datetime_str, open, high, low, close, volume = data

    self.poly = self.Polygon("test", color="rgba(255, 0, 0, 0.8)", bg_color="rgba(255, 0, 0, 0.15)")

    self.start_down = self.CornerSegment("start_down", datetime_str[-40], 9200, color="rgba(255, 0, 0, 0.3)", radius=1, type=0)
    self.start_up = self.CornerSegment("start_up", datetime_str[-40], 9218, color="rgba(255, 0, 0, 0.3)", radius=1, type=0)
    self.end_up = self.CornerSegment("end_up", datetime_str[-10], 9218, color="rgba(255, 0, 0, 0.3)", radius=1, type=0)
    self.end_down = self.CornerSegment("end_down", datetime_str[-10], 9200, color="rgba(255, 0, 0, 0.3)", radius=1, type=0)

    self.poly.set_segment(self.start_down)
    self.poly.set_segment(self.start_up)
    self.poly.set_segment(self.end_up)
    self.poly.set_segment(self.end_down)

Polygon


ArrowLine — 箭头线

箭头用于绘制箭头线。绘制箭头请使用 set_start_point() 和 set_end_point() 方法,而不是使用 set_point() 方法。

实例化参数

参数 必填 说明 示例
name 是 图形名称 'arrow1'
color 是 箭头颜色 rgba(255, 0, 0, 1)
start 否 是否绘制开始箭头 false
end 否 是否绘制结束箭头 true
angle 否 箭头的角度 30
length 否 箭头的长度 20
line_width 否 箭头的粗细 4

代码案例

def on_init(self):
    self.arrow1 = self.ArrowLine('a1', '#FFCC00', start=True, end=True, angle=30, length=20, line_width=4)
    self.arrow2 = self.ArrowLine('a2', '#33CC66', start=False, end=True, angle=30, length=20, line_width=4)

绘制参数

参数 必填 说明 示例
key 是 键名,k 线时间 2025-01-22 09:45:00
value 是 值,价格(在 Y 轴的位置) 5000
def calculate_all(self, data):
    length, datetime_str, open, high, low, close, volume = data
    self.arrow2.set_start_point(datetime_str[-40], 9208)
    self.arrow2.set_end_point(datetime_str[-15], 9180)

ArrowLine


ColorKline — 彩色 K 线

彩色 k 线可以绘制出不同颜色的 k 线,用于突出显示某些特定的 k 线,或者可以覆盖现有 k 线。

实例化参数

参数 必填 说明 示例
name 是 图形名称 'main_kline'
default_color 否 默认颜色 rgba(255, 0, 0, 1)

代码案例

def on_init(self):
    self.color_kline = self.ColorKline('main_kline')

绘制参数

参数 必填 说明 示例
key 是 键名,k 线时间 2025-01-22 09:45:00
color 否 k 线颜色 rgba(255, 0, 0, 1)
def calculate_all(self, data):
    for i in range(self.length):
        s = self.cal_signal(i, self.high_list, self.low_list, self.close_list)
        if s == 1:
            self.color_kline.set_point(self.datetime_list[i], color="rgba(0, 255, 255)")
        elif s == -3:
            self.color_kline.set_point(self.datetime_list[i], color="rgba(255, 0, 0)")

ColorKline


MultiLine — 多段线条

当我们需要绘制不连续的线条时,可以使用多段线条。多段线条依赖于子对象 LineSegment,通过 set_segment() 方法添加子对象。

实例化参数

参数 必填 说明 示例
name 是 图形名称 'multi_line'
line_width 否 线宽 2
line_dash 否 虚线间隔 [3, 3]

代码案例

def on_init(self):
    self.multi_line = self.MultiLine('multi_line', line_dash=[3, 3])

绘制参数(LineSegment)

参数 必填 说明 示例
name 是 图形名称 'line_segment1'
color 是 线条颜色 rgba(255, 0, 0, 1)
key 是 键名,k 线时间 2025-01-22 09:45:00
value 是 值,价格(在 Y 轴的位置) 5000
def on_init(self):
    self.calculate_type = "all"
    self.calculate_data_type = "list"
    self.multi_line = self.MultiLine("multi_line")
    self.line_segment1 = self.LineSegment("green_segment", "rgb(0, 255, 127)")
    self.line_segment2 = self.LineSegment("red_segment", "rgb(244,55,50)")
    self.line_segment3 = self.LineSegment("yellow_segment", "rgb(255, 255, 0)")
    self.line_segment4 = self.LineSegment("blue_segment", "rgb(0, 0, 255)")

def calculate_all(self, data):
    length, datetime_str, open, high, low, close, volume = data
    for i in range(10):
        self.line_segment1.set_point(datetime_str[i], high[i] * 1.001)
    for i in range(20, 30):
        self.line_segment2.set_point(datetime_str[i], low[i] * 0.999)
    for i in range(40, 50):
        self.line_segment3.set_point(datetime_str[i], high[i] * 1.001)
    for i in range(60, 70):
        self.line_segment4.set_point(datetime_str[i], low[i] * 0.999)

    self.multi_line.set_segment(self.line_segment1)
    self.multi_line.set_segment(self.line_segment2)
    self.multi_line.set_segment(self.line_segment3)
    self.multi_line.set_segment(self.line_segment4)

MultiLine


MultiText — 多段文字

当我们需要绘制不连续的文字时,可以使用多段文字。多段文字依赖于子对象 TextSegment,通过 set_segment() 方法添加子对象。

实例化参数

参数 必填 说明 示例
name 是 图形名称 'multi_text1'

代码案例

def on_init(self):
    self.atp_multi_text = self.MultiText('atp_multi_text')
    self.ttp_multi_text = self.MultiText('ttp_multi_text')

绘制参数(TextSegment)

参数 必填 说明 示例
name 是 图形名称 'multi_text1'
key 是 键名,k 线时间 2025-01-22 09:45:00
value 是 值,价格(在 Y 轴的位置) 5000
text 是 文字内容 "B 信号"
color 否 文字颜色 rgb(255,0,0)
font 否 字体 18px 微软雅黑
base_line 否 上下居中方式 0 居中 1 上 2 下
y_move 否 文字 Y 轴显示位置 10
def on_init(self):
    self.calculate_type = "all"
    self.calculate_data_type = "list"
    self.multi_text = self.MultiText("multi_text")
    self.text_segment1 = self.TextSegment("green_segment")
    self.text_segment2 = self.TextSegment("red_segment")
    self.text_segment3 = self.TextSegment("yellow_segment")

def calculate_all(self, data):
    length, datetime_str, open, high, low, close, volume = data

    self.text_segment1.set_point(datetime_str[-1], 9224, "-----------------R3")
    self.text_segment2.set_point(datetime_str[-1], 9210, "-----------------R2")
    self.text_segment3.set_point(datetime_str[-1], 9180, "-----------------R1")

    self.multi_text.set_segment(self.text_segment1)
    self.multi_text.set_segment(self.text_segment2)
    self.multi_text.set_segment(self.text_segment3)

MultiText


MultiPoint — 多段圆点

当我们需要绘制不连续的圆点时,可以使用多段圆点。多段圆点依赖于子对象 PointSegment,通过 set_segment() 方法添加子对象。

实例化参数

参数 必填 说明 示例
name 是 图形名称 'multi_point1'

代码案例

def on_init(self):
    self.multi_point = self.MultiPoint('multi_point')

绘制参数(PointSegment)

参数 必填 说明 示例
name 是 图形名称 'point_segment1'
color 是 圆点颜色 rgba(255, 0, 0, 1)
key 是 键名,k 线时间 2025-01-22 09:45:00
value 是 值,价格(在 Y 轴的位置) 50
bg_color 否 背景颜色 rgba(255, 0, 0, 0.5)
point_radius 否 圆点弧度 8
def on_init(self):
    self.calculate_type = "all"
    self.calculate_data_type = "list"
    self.multi_point = self.MultiPoint("multi_point")
    self.point_segment1 = self.PointSegment("green_segment", "rgb(0, 255, 127)")
    self.point_segment2 = self.PointSegment("red_segment", "rgb(244,55,50)")
    self.point_segment3 = self.PointSegment("yellow_segment", "rgb(255, 255, 0)")
    self.point_segment4 = self.PointSegment("blue_segment", "rgb(0, 0, 255)")

def calculate_all(self, data):
    length, datetime_str, open, high, low, close, volume = data
    for i in range(10):
        self.point_segment1.set_point(datetime_str[i], high[i] * 1.001)
    for i in range(20, 30):
        self.point_segment2.set_point(datetime_str[i], low[i] * 0.999)
    for i in range(40, 50):
        self.point_segment3.set_point(datetime_str[i], high[i] * 1.001)
    for i in range(60, 70):
        self.point_segment4.set_point(datetime_str[i], low[i] * 0.999)

    self.multi_point.set_segment(self.point_segment1)
    self.multi_point.set_segment(self.point_segment2)
    self.multi_point.set_segment(self.point_segment3)
    self.multi_point.set_segment(self.point_segment4)

MultiPoint


Table — 表格

表格可以用来展示更丰富的综合信息。定义表格需要定义行数和列数,然后定义表格的位置和基础样式,最后填充标题和内容。

可以通过 set_table_data() 一次性添加全部表格内容,也可以通过 set_table_cell() 给指定的格子更新内容。

实例化参数

参数 必填 说明 示例
name 是 图形名称 'my_table'
row 是 行数 2
col 是 列数 2
top 否 距离上方定位 10px 或 10%
left 否 距离左边定位 10px 或 10%
font_size 否 字体大小 18
font_color 否 字体颜色 #fffb8f
border_size 否 边框大小 5
border_color 否 边框颜色 #fadb14
background_color 否 背景颜色 rgba(255, 255, 255, 0.1)
text_align 否 文字对齐方式 left 左对齐 center 居中 right 右对齐

代码案例

def on_init(self):
    style = {
        "top": "10px",
        "left": "10px",
        "font_size": 18,
        "font_color": "#fffb8f",
        "border_size": 5,
        "border_color": "#fadb14",
        "background_color": "rgba(255, 255, 255, 0.1)",
        "text_align": "right",
    }
    self.table = self.Table("my_table", 2, 2, **style)
    title_style = {
        "font_size": 24,
        "font_color": "#f5222d",
        "text_align": "center",
    }
    self.table.set_table_title("Demo Table", **title_style)

绘制参数

参数 必填 说明 示例
content 是 表格文字内容 示例内容
font_size 否 文字大小 14px
font_color 否 文字颜色 #f5222d
border_size 否 边框大小 5
border_color 否 边框颜色 #fadb14
background_color 否 背景颜色 rgba(255, 255, 255, 0.1)
text_align 否 文字对齐方式 left center right
def on_init(self):
    self.calculate_type = "last"
    self.calculate_data_type = "list"
    self.fields("open", "high", "low", "close")

    style = {
        "top": "500px", "left": "20px", "font_size": 18, "font_color": "#fffb8f",
        "border_size": 5, "border_color": "#fadb14",
        "background_color": "rgba(255, 255, 255, 0.1)", "text_align": "right",
    }
    self.table = self.Table("t", 2, 2, **style)
    title_style = {"font_size": 24, "font_color": "#f5222d", "text_align": "center"}
    self.table.set_table_title("Title", **title_style)

def calculate_all(self, data):
    _, klines = data
    self.table.set_point(klines["datetime"][-1], klines["close"][-1])
    table_data = [
        [{"content": f"Open: {klines['open'][-1]}", "font_size": 16},
         {"content": f"High: {klines['high'][-1]}", "font_size": 16}],
        [{"content": f"Low: {klines['low'][-1]}", "font_size": 16},
         {"content": f"Close: {klines['close'][-1]}", "font_size": 16}],
    ]
    self.table.set_table_data(table_data)

Table


相关阅读

已复制到剪贴板
指标文档 · 期货版修订 R1

返回指标文档 · 期货版板块

评论