本文汇总期魔方指标中所有图形对象的完整参数列表,供开发时查阅。
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)
![]()
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 微软雅黑"
)
![]()
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)"
)
![]()
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])
![]()
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)
![]()
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)
![]()
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)")
![]()
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)
![]()
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)
![]()
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)
![]()
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)
![]()
相关阅读

评论
登录后参与讨论,与站内账号体系共用。