DoEasy 函数库中的图形(第八十三部分):抽象标准图形对象类·进阶篇
🧩

DoEasy 函数库中的图形(第八十三部分):抽象标准图形对象类·进阶篇

(2/3)·手工创建的标准图形对象如何被函数库接管?抽象类先收下所有对象共有的属性与方法

新手友好 第 2/3 篇

很多交易者把 MT5 里手画的箭头、趋势线当成一次性标注,库里没法统一改属性就懒得管。其实只要给每类标准对象配一个绑定类,面板菜单就能替你批量调属性,省掉重复右键。

「图形对象归属与属性枚举的底层定义」

在自建图形库时,先要把对象的「身份」和「归属」用枚举钉死。ENUM_GRAPH_OBJ_BELONG 只给两个值:GRAPH_OBJ_BELONG_PROGRAM 表示对象由程序创建并受控,GRAPH_OBJ_BELONG_NO_PROGRAM 则是图表上那些不属于当前 EA/脚本的散落对象。 对象类型再细分为 ENUM_GRAPH_ELEMENT_TYPE:从 GRAPH_ELEMENT_TYPE_STANDART 标准对象,到 ELEMENT、SHADOW_OBJ、FORM、WINDOW 五类。实际写面板时,WINDOW 和 FORM 最常用来做可拖拽容器,SHADOW_OBJ 多用于鼠标悬停的临时高亮层。 整数属性枚举 ENUM_GRAPH_OBJ_PROP_INTEGER 从 0 开始排:GRAPH_OBJ_PROP_ID=0 是对象唯一 ID,紧接着 TYPE、ELEMENT_TYPE、BELONG、CHART_ID、WND_NUM、NUM。CHART_ID 与 WND_NUM 组合能定位对象挂在哪个图表、哪个子窗口,NUM 则是列表内序号。 开 MT5 把这段枚举贴进头文件,编译后用一个 Print() 轮询 GRAPH_OBJ_PROP_BELONG 的两个常量值,能确认库里「程序内/程序外」对象的过滤逻辑是否按预期分流。外汇与贵金属图表对象受报价跳动影响,高频重绘时归属判断失误可能导致对象泄漏,属高风险操作。

MQL5 / C++
enum ENUM_GRAPH_OBJ_BELONG
  {
  GRAPH_OBJ_BELONG_PROGRAM,              class=class="str">"cmt">// Graphical object belongs to a program
  GRAPH_OBJ_BELONG_NO_PROGRAM,           class=class="str">"cmt">// Graphical object does not belong to a program
  };
enum ENUM_GRAPH_ELEMENT_TYPE
  {
  GRAPH_ELEMENT_TYPE_STANDART,           class=class="str">"cmt">// Standard graphical object
  GRAPH_ELEMENT_TYPE_ELEMENT,            class=class="str">"cmt">// Element
  GRAPH_ELEMENT_TYPE_SHADOW_OBJ,         class=class="str">"cmt">// Shadow object
  GRAPH_ELEMENT_TYPE_FORM,               class=class="str">"cmt">// Form
  GRAPH_ELEMENT_TYPE_WINDOW,             class=class="str">"cmt">// Window
  };
enum ENUM_GRAPH_OBJ_PROP_INTEGER
  {
  class=class="str">"cmt">//--- Additional properties
  GRAPH_OBJ_PROP_ID = class="num">0,                 class=class="str">"cmt">// Object ID
  GRAPH_OBJ_PROP_TYPE,                   class=class="str">"cmt">// Graphical object type(ENUM_OBJECT)
  GRAPH_OBJ_PROP_ELEMENT_TYPE,           class=class="str">"cmt">// Graphical element type(ENUM_GRAPH_ELEMENT_TYPE)
  GRAPH_OBJ_PROP_BELONG,                 class=class="str">"cmt">// Graphical object affiliation
  GRAPH_OBJ_PROP_CHART_ID,               class=class="str">"cmt">// Chart ID
  GRAPH_OBJ_PROP_WND_NUM,                class=class="str">"cmt">// Chart subwindow index
  GRAPH_OBJ_PROP_NUM,                    class=class="str">"cmt">// Object index in the list
  };

◍ 图形对象属性的枚举分层

在 MT5 里给图表挂对象,先得搞清楚属性枚举的归类逻辑。一类是所有图形对象通用的底层属性,另一类是按对象类型才生效的专属属性,混用会导致赋值无效或运行时报错。 通用属性里,GRAPH_OBJ_PROP_CREATETIME 记录对象创建时间,GRAPH_OBJ_PROP_TIMEFRAMES 控制多周期可见性,GRAPH_OBJ_PROP_BACK 决定是否为背景层对象,GRAPH_OBJ_PROP_ZORDER 影响鼠标点击图表的事件优先级,GRAPH_OBJ_PROP_HIDDEN 可隐藏对象在终端列表中的名称。 专属属性则包括坐标时间 GRAPH_OBJ_PROP_TIME、颜色 GRAPH_OBJ_PROP_COLOR、线型 GRAPH_OBJ_PROP_STYLE 与宽度 GRAPH_OBJ_PROP_WIDTH,以及填充 GRAPH_OBJ_PROP_FILL。文本类对象还有 GRAPH_OBJ_PROP_READONLY、GRAPH_OBJ_PROP_ALIGN、GRAPH_OBJ_PROP_FONTSIZE 等可控项。 趋势线相关的射线开关值得单独记:GRAPH_OBJ_PROP_RAY_LEFT 向左延伸,GRAPH_OBJ_PROP_RAY_RIGHT 向右延伸,GRAPH_OBJ_PROP_RAY 则让竖线穿透图表所有子窗口。外汇与贵金属图表对象受报价跳空影响,射线类对象可能在大跳空后视觉错位,实操前建议在 MT5 用 EURUSD 的 M1 数据手动建一个对象验证属性响应。

MQL5 / C++
class=class="str">"cmt">//--- Common properties of all graphical objects
  GRAPH_OBJ_PROP_CREATETIME,               class=class="str">"cmt">// Object creation time
  GRAPH_OBJ_PROP_TIMEFRAMES,               class=class="str">"cmt">// Object visibility on timeframes
  GRAPH_OBJ_PROP_BACK,                     class=class="str">"cmt">// Background object
  GRAPH_OBJ_PROP_ZORDER,                   class=class="str">"cmt">// Priority of a graphical object for receiving the event of clicking on a chart
  GRAPH_OBJ_PROP_HIDDEN,                   class=class="str">"cmt">// Disable displaying the name of a graphical object in the terminal object list
  GRAPH_OBJ_PROP_SELECTED,                 class=class="str">"cmt">// Object selection
  GRAPH_OBJ_PROP_SELECTABLE,               class=class="str">"cmt">// Object availability
class=class="str">"cmt">//--- Properties belonging to different graphical objects
  GRAPH_OBJ_PROP_TIME,                     class=class="str">"cmt">// Time coordinate
  GRAPH_OBJ_PROP_COLOR,                    class=class="str">"cmt">// Color
  GRAPH_OBJ_PROP_STYLE,                    class=class="str">"cmt">// Style
  GRAPH_OBJ_PROP_WIDTH,                    class=class="str">"cmt">// Line width
  GRAPH_OBJ_PROP_FILL,                     class=class="str">"cmt">// Object class="type">color filling
  GRAPH_OBJ_PROP_READONLY,                 class=class="str">"cmt">// Ability to edit text in the Edit object
  GRAPH_OBJ_PROP_LEVELS,                   class=class="str">"cmt">// Number of levels
  GRAPH_OBJ_PROP_LEVELCOLOR,               class=class="str">"cmt">// Level line class="type">color
  GRAPH_OBJ_PROP_LEVELSTYLE,               class=class="str">"cmt">// Level line style
  GRAPH_OBJ_PROP_LEVELWIDTH,               class=class="str">"cmt">// Level line width
  GRAPH_OBJ_PROP_ALIGN,                    class=class="str">"cmt">// Horizontal text alignment in the Edit object(OBJ_EDIT)
  GRAPH_OBJ_PROP_FONTSIZE,                 class=class="str">"cmt">// Font size
  GRAPH_OBJ_PROP_RAY_LEFT,                 class=class="str">"cmt">// Ray goes to the left
  GRAPH_OBJ_PROP_RAY_RIGHT,                class=class="str">"cmt">// Ray goes to the right
  GRAPH_OBJ_PROP_RAY,                      class=class="str">"cmt">// Vertical line goes through all windows of a chart

图形对象整数属性的尾部枚举与计数

上面这段枚举收尾,补齐了 MT5 图形对象整数属性里偏「界面与内嵌图表」的一组成员。 GRAPH_OBJ_PROP_ELLIPSE 控制斐波那契弧是否画完整椭圆;GRAPH_OBJ_PROP_ARROWCODE 决定 Arrow 对象的箭头样式代码;GRAPH_OBJ_PROP_ANCHOR 是对象绑定点的对齐位置。 GRAPH_OBJ_PROP_XDISTANCE / YDISTANCE 用像素定义对象距基准角的偏移;GRAPH_OBJ_PROP_DIRECTION 管甘氏对象的趋势方向;GRAPH_OBJ_PROP_DEGREE 和 DRAWLINES 则对应艾略特波浪标注的层级与连线显示。 再往下是 OBJ_CHART 内嵌图表相关:CHART_OBJ_PERIOD 设周期,DATE_SCALE / PRICE_SCALE / CHART_SCALE 控制时间轴、价格轴与整体缩放是否显示及比例。 XSIZE / YSIZE 以像素定宽高,XOFFSET / YOFFSET 是可见区域左上角坐标;BGCOLOR、BORDER_TYPE、BORDER_COLOR 管 Edit / Button / Label 类控件的背景与边框。 枚举闭括号后紧跟 #define GRAPH_OBJ_PROP_INTEGER_TOTAL (51),说明整套整数属性共 51 个。开 MT5 在 <stdlib> 或自定义头文件里搜这个宏,能直接核对自己平台版本是否一致,若数目不符可能要重编译依赖库。

MQL5 / C++
  GRAPH_OBJ_PROP_ELLIPSE,                                                                     class=class="str">"cmt">// Display the full ellipse of the Fibonacci Arc object
  GRAPH_OBJ_PROP_ARROWCODE,                                                                     class=class="str">"cmt">// Arrow code for the "Arrow" object
  GRAPH_OBJ_PROP_ANCHOR,                                                                        class=class="str">"cmt">// Position of the binding point of the graphical object
  GRAPH_OBJ_PROP_XDISTANCE,                                                                     class=class="str">"cmt">// Distance from the base corner along the X axis in pixels
  GRAPH_OBJ_PROP_YDISTANCE,                                                                     class=class="str">"cmt">// Distance from the base corner along the Y axis in pixels
  GRAPH_OBJ_PROP_DIRECTION,                                                                     class=class="str">"cmt">// Gann object trend
  GRAPH_OBJ_PROP_DEGREE,                                                                        class=class="str">"cmt">// Elliott wave marking level
  GRAPH_OBJ_PROP_DRAWLINES,                                                                     class=class="str">"cmt">// Display lines for Elliott wave marking
  GRAPH_OBJ_PROP_STATE,                                                                         class=class="str">"cmt">// Button state(pressed/released)
  GRAPH_OBJ_PROP_OBJ_CHART_ID,                                                                  class=class="str">"cmt">// Chart object ID(OBJ_CHART).
  GRAPH_OBJ_PROP_CHART_OBJ_PERIOD,                                                              class=class="str">"cmt">// Chart object period
  GRAPH_OBJ_PROP_CHART_OBJ_DATE_SCALE,                                                          class=class="str">"cmt">// Time scale display flag for the Chart object
  GRAPH_OBJ_PROP_CHART_OBJ_PRICE_SCALE,                                                         class=class="str">"cmt">// Price scale display flag for the Chart object
  GRAPH_OBJ_PROP_CHART_OBJ_CHART_SCALE,                                                         class=class="str">"cmt">// Chart object scale
  GRAPH_OBJ_PROP_XSIZE,                                                                         class=class="str">"cmt">// Object width along the X axis in pixels.
  GRAPH_OBJ_PROP_YSIZE,                                                                         class=class="str">"cmt">// Object height along the Y axis in pixels.
  GRAPH_OBJ_PROP_XOFFSET,                                                                       class=class="str">"cmt">// X coordinate of the upper-left corner of the visibility area.
  GRAPH_OBJ_PROP_YOFFSET,                                                                       class=class="str">"cmt">// Y coordinate of the upper-left corner of the visibility area.
  GRAPH_OBJ_PROP_BGCOLOR,                                                                       class=class="str">"cmt">// Background class="type">color for OBJ_EDIT, OBJ_BUTTON, OBJ_RECTANGLE_LABEL
  GRAPH_OBJ_PROP_CORNER,                                                                        class=class="str">"cmt">// Chart corner for binding a graphical object
  GRAPH_OBJ_PROP_BORDER_TYPE,                                                                   class=class="str">"cmt">// Border type for "Rectangle border"
  GRAPH_OBJ_PROP_BORDER_COLOR,                                                                  class=class="str">"cmt">// Border class="type">color for OBJ_EDIT and OBJ_BUTTON
};
class="macro">#define GRAPH_OBJ_PROP_INTEGER_TOTAL(class="num">51)                                                        class=class="str">"cmt">// Total number of integer properties

「图形对象属性的枚举拆分与排序偏移」

在 MT5 里给标准图形对象做批量排序前,得先理清它三类属性的底层编号。整数属性、实数属性、字符串属性各自成枚举,且后两类靠前面类型的 TOTAL 常量做下标偏移,不是从 0 重排。 实数属性枚举 ENUM_GRAPH_OBJ_PROP_DOUBLE 从 GRAPH_OBJ_PROP_INTEGER_TOTAL 接着数,定义了 5 个:价格坐标、水平值、缩放、角度、标准差通道偏离,宏 GRAPH_OBJ_PROP_DOUBLE_TOTAL 写死为 5,SKIP 为 0 表示没有跳过不参与排序的项。 字符串属性枚举 ENUM_GRAPH_OBJ_PROP_STRING 起点是 INT_TOTAL+DBL_TOTAL,共 7 个:对象名、文本、提示框、水平描述、字体、位图文件名、Chart 对象品种。宏 GRAPH_OBJ_PROP_STRING_TOTAL 等于 7,这是后续按名称或品种筛对象时的索引上限。 排序模式的下界用两个宏算出:FIRST_GRAPH_OBJ_DBL_PROP 等于整数总数减跳过数,FIRST_GRAPH_OBJ_STR_PROP 再叠加实数总数减跳过数。你开 MT5 的 MetaEditor 把这套枚举贴进 EA,就能直接拿 ObjectGetInteger/ObjectGetString 按索引遍历,不用硬背属性 ID。外汇与贵金属图表对象受报价跳空影响,遍历结果可能漏掉非活跃时段手绘线,属正常概率现象。

MQL5 / C++
class="macro">#define GRAPH_OBJ_PROP_INTEGER_SKIP(class="num">0)                class=class="str">"cmt">// Number of integer properties not used in sorting
class=class="str">"cmt">//+------------------------------------------------------------------+
class=class="str">"cmt">//| Real properties of a standard graphical object                    |
class=class="str">"cmt">//+------------------------------------------------------------------+
enum ENUM_GRAPH_OBJ_PROP_DOUBLE
  {
   GRAPH_OBJ_PROP_PRICE = GRAPH_OBJ_PROP_INTEGER_TOTAL,class=class="str">"cmt">// Price coordinate
   GRAPH_OBJ_PROP_LEVELVALUE,                          class=class="str">"cmt">// Level value
   GRAPH_OBJ_PROP_SCALE,                               class=class="str">"cmt">// Scale
   GRAPH_OBJ_PROP_ANGLE,                               class=class="str">"cmt">// Angle
   GRAPH_OBJ_PROP_DEVIATION,                           class=class="str">"cmt">// Deviation of the standard deviation channel
   };
class="macro">#define GRAPH_OBJ_PROP_DOUBLE_TOTAL(class="num">5)                class=class="str">"cmt">// Total number of real properties
class="macro">#define GRAPH_OBJ_PROP_DOUBLE_SKIP(class="num">0)                class=class="str">"cmt">// Number of real properties not used in sorting
class=class="str">"cmt">//+------------------------------------------------------------------+
class=class="str">"cmt">//| String properties of a standard graphical object                  |
class=class="str">"cmt">//+------------------------------------------------------------------+
enum ENUM_GRAPH_OBJ_PROP_STRING
  {
   GRAPH_OBJ_PROP_NAME = (GRAPH_OBJ_PROP_INTEGER_TOTAL+GRAPH_OBJ_PROP_DOUBLE_TOTAL), class=class="str">"cmt">// Object name
   GRAPH_OBJ_PROP_TEXT,                                class=class="str">"cmt">// Object description(text contained in the object)
   GRAPH_OBJ_PROP_TOOLTIP,                             class=class="str">"cmt">// Tooltip text
   GRAPH_OBJ_PROP_LEVELTEXT,                           class=class="str">"cmt">// Level description
   GRAPH_OBJ_PROP_FONT,                                class=class="str">"cmt">// Font
   GRAPH_OBJ_PROP_BMPFILE,                             class=class="str">"cmt">// BMP file name for the "Bitmap Level" object
   GRAPH_OBJ_PROP_CHART_OBJ_SYMBOL,                    class=class="str">"cmt">// Symbol for the Chart object 
   };
class="macro">#define GRAPH_OBJ_PROP_STRING_TOTAL(class="num">7)                class=class="str">"cmt">// Total number of class="type">class="kw">string properties
class=class="str">"cmt">//+------------------------------------------------------------------+
class=class="str">"cmt">//+------------------------------------------------------------------+
class=class="str">"cmt">//| Possible sorting criteria of graphical objects                    |
class=class="str">"cmt">//+------------------------------------------------------------------+
class="macro">#define FIRST_GRAPH_OBJ_DBL_PROP(GRAPH_OBJ_PROP_INTEGER_TOTAL-GRAPH_OBJ_PROP_INTEGER_SKIP)
class="macro">#define FIRST_GRAPH_OBJ_STR_PROP(GRAPH_OBJ_PROP_INTEGER_TOTAL-GRAPH_OBJ_PROP_INTEGER_SKIP+GRAPH_OBJ_PROP_DOUBLE_TOTAL-GRAPH_OBJ_PROP_DOUBLE_SKIP)
enum ENUM_SORT_GRAPH_OBJ_MODE
  {
class=class="str">"cmt">//--- Sort by integer properties

◍ 图形对象排序枚举的逐条含义

在 MT5 的 ObjectsTotal / ObjectGet 相关调用里,经常需要按某种规则批量枚举图表上的图形对象。系统提供了一组 SORT_BY_GRAPH_OBJ_* 枚举,用来决定 ObjectsFind / 集合遍历时的排列依据。 下面这段枚举定义了 26 个排序维度,从对象 ID 到水平线颜色都有覆盖。比如 SORT_BY_GRAPH_OBJ_CREATETIME 按创建时间排,SORT_BY_GRAPH_OBJ_ZORDER 按点击接收优先级排,SORT_BY_GRAPH_OBJ_TIMEFRAMES 按各周期可见性排。 实盘写 EA 时,如果你要清理某图表子窗口(SORT_BY_GRAPH_OBJ_WND_NUM)里所有手工画的线,用对应枚举拿到的列表顺序会更可控,避免误删主图对象。外汇与贵金属杠杆高,脚本批量删对象前务必在模拟盘验一遍。

MQL5 / C++
SORT_BY_GRAPH_OBJ_ID = class="num">0,                         class=class="str">"cmt">// Sort by object ID
SORT_BY_GRAPH_OBJ_TYPE,                       class=class="str">"cmt">// Sort by object type
SORT_BY_GRAPH_OBJ_ELEMENT_TYPE,               class=class="str">"cmt">// Sort by graphical element type
SORT_BY_GRAPH_OBJ_BELONG,                     class=class="str">"cmt">//  Sort by a graphical element affiliation
SORT_BY_GRAPH_OBJ_CHART_ID,                   class=class="str">"cmt">// Sort by chart ID
SORT_BY_GRAPH_OBJ_WND_NUM,                    class=class="str">"cmt">// Sort by chart subwindow index
SORT_BY_GRAPH_OBJ_NUM,                        class=class="str">"cmt">// Sort by object index in the list
SORT_BY_GRAPH_OBJ_CREATETIME,                 class=class="str">"cmt">// Sort by object creation time
SORT_BY_GRAPH_OBJ_TIMEFRAMES,                 class=class="str">"cmt">// Sort by object visibility on timeframes
SORT_BY_GRAPH_OBJ_BACK,                       class=class="str">"cmt">// Sort by the "Background object" class="kw">property
SORT_BY_GRAPH_OBJ_ZORDER,                     class=class="str">"cmt">// Sort by the priority of a graphical object for receiving the event of clicking on a chart
SORT_BY_GRAPH_OBJ_HIDDEN,                     class=class="str">"cmt">// Sort by a disabling display of the name of a graphical object in the terminal object list
SORT_BY_GRAPH_OBJ_SELECTED,                   class=class="str">"cmt">// Sort by the "Object selection" class="kw">property
SORT_BY_GRAPH_OBJ_SELECTABLE,                 class=class="str">"cmt">// Sort by the "Object availability" class="kw">property
SORT_BY_GRAPH_OBJ_TIME,                       class=class="str">"cmt">// Sort by time coordinate
SORT_BY_GRAPH_OBJ_COLOR,                      class=class="str">"cmt">// Sort by class="type">color
SORT_BY_GRAPH_OBJ_STYLE,                      class=class="str">"cmt">// Sort by style
SORT_BY_GRAPH_OBJ_WIDTH,                      class=class="str">"cmt">// Sort by line width
SORT_BY_GRAPH_OBJ_FILL,                       class=class="str">"cmt">// Sort by the "Object class="type">color filling" class="kw">property
SORT_BY_GRAPH_OBJ_READONLY,                   class=class="str">"cmt">// Sort by the ability to edit text in the Edit object
SORT_BY_GRAPH_OBJ_LEVELS,                     class=class="str">"cmt">// Sort by number of levels
SORT_BY_GRAPH_OBJ_LEVELCOLOR,                 class=class="str">"cmt">// Sort by line level class="type">color

图形对象排序枚举的尾部清单

在 MT5 的 ObjectsTotal / ObjectGetInteger 体系里,图形对象排序方式走到 SORT_BY_GRAPH_OBJ_LEVELSTYLE 之后,还有一整组以 SORT_BY_GRAPH_OBJ_ 开头的枚举量,专门覆盖画线样式、宽度、文字对齐、字体尺寸等细分属性。 这些枚举大多用于 ObjectsSort() 的排序模式参数,例如 SORT_BY_GRAPH_OBJ_RAY_LEFT 对应「射线向左延伸」属性,SORT_BY_GRAPH_OBJ_RAY_RIGHT 对应「射线向右延伸」,SORT_BY_GRAPH_OBJ_RAY 则针对「垂直线穿透图表所有子窗口」这一开关。 斐波那契弧、江恩、艾略特等复杂对象也有专属排序键:SORT_BY_GRAPH_OBJ_ELLIPSE 管「显示完整椭圆」,SORT_BY_GRAPH_OBJ_DIRECTION 管「江恩对象趋势」,SORT_BY_GRAPH_OBJ_DEGREE 与 SORT_BY_GRAPH_OBJ_DRAWLINES 分别管「艾略特波浪标注层级」和「是否显示波浪连线」。 内嵌图表对象(Chart object)同样可排:从 OBJ_CHART_ID、周期、时间/价格轴显示旗标到图表缩放比例,对应 SORT_BY_GRAPH_OBJ_CHART_OBJ_CHART_SCALE 等四个枚举。外汇与贵金属图表上滥用这些排序可能拖慢刷新,属高风险环境下的性能细节,建议开 MT5 用以下片段自查枚举值。

MQL5 / C++
  SORT_BY_GRAPH_OBJ_LEVELSTYLE,                                                   class=class="str">"cmt">// Sort by line level style
  SORT_BY_GRAPH_OBJ_LEVELWIDTH,                                                   class=class="str">"cmt">// Sort by line level width
  SORT_BY_GRAPH_OBJ_ALIGN,                                                        class=class="str">"cmt">// Sort by the "Horizontal text alignment in the Entry field" class="kw">property
  SORT_BY_GRAPH_OBJ_FONTSIZE,                                                     class=class="str">"cmt">// Sort by font size
  SORT_BY_GRAPH_OBJ_RAY_LEFT,                                                     class=class="str">"cmt">// Sort by "Ray goes to the left" class="kw">property
  SORT_BY_GRAPH_OBJ_RAY_RIGHT,                                                    class=class="str">"cmt">// Sort by "Ray goes to the right" class="kw">property
  SORT_BY_GRAPH_OBJ_RAY,                                                          class=class="str">"cmt">// Sort by the "Vertical line goes through all windows of a chart" class="kw">property
  SORT_BY_GRAPH_OBJ_ELLIPSE,                                                      class=class="str">"cmt">// Sort by the "Display the full ellipse of the Fibonacci Arc object" class="kw">property
  SORT_BY_GRAPH_OBJ_ARROWCODE,                                                    class=class="str">"cmt">// Sort by an arrow code for the Arrow object
  SORT_BY_GRAPH_OBJ_ANCHOR,                                                       class=class="str">"cmt">// Sort by the position of a binding point of a graphical object
  SORT_BY_GRAPH_OBJ_XDISTANCE,                                                    class=class="str">"cmt">// Sort by a distance from the base corner along the X axis in pixels
  SORT_BY_GRAPH_OBJ_YDISTANCE,                                                    class=class="str">"cmt">// Sort by a distance from the base corner along the Y axis in pixels
  SORT_BY_GRAPH_OBJ_DIRECTION,                                                    class=class="str">"cmt">// Sort by the "Gann object trend" class="kw">property
  SORT_BY_GRAPH_OBJ_DEGREE,                                                       class=class="str">"cmt">// Sort by the "Elliott wave marking level" class="kw">property
  SORT_BY_GRAPH_OBJ_DRAWLINES,                                                    class=class="str">"cmt">// Sort by the "Display lines for Elliott wave marking" class="kw">property
  SORT_BY_GRAPH_OBJ_STATE,                                                        class=class="str">"cmt">// Sort by button state(pressed/released)
  SORT_BY_GRAPH_OBJ_OBJ_CHART_ID,                                                 class=class="str">"cmt">// Sort by Chart object ID.
  SORT_BY_GRAPH_OBJ_CHART_OBJ_PERIOD,                                             class=class="str">"cmt">// Sort by Chart object period
  SORT_BY_GRAPH_OBJ_CHART_OBJ_DATE_SCALE,                                         class=class="str">"cmt">// Sort by time scale display flag for the Chart object
  SORT_BY_GRAPH_OBJ_CHART_OBJ_PRICE_SCALE,                                        class=class="str">"cmt">// Sort by price scale display flag for the Chart object
  SORT_BY_GRAPH_OBJ_CHART_OBJ_CHART_SCALE,                                        class=class="str">"cmt">// Sort by Chart object scale
  SORT_BY_GRAPH_OBJ_XSIZE                                                        class=class="str">"cmt">// Sort by Object width along the X axis in pixels
交给小布盯盘看盘口
这些对象属性诊断小布盯盘的 AIGC 已内置,打开对应品种页即可看到哪些手工图形被库接管、哪些还是游离状态,你只管决定要不要统一整理。

常见问题

抽象类只放所有图形共有的属性读取方法,箭头代码这类专属属性在衍生类里实现,引用时只能碰到对象自己有的那部分。
函数库默认不自动接管手工对象,用户触发关联菜单后绑定类才生效,之后就能用代码改颜色、射线开关而不用逐个右键。
可以,小布会列出当前品种页的手工图形及其绑定状态,未纳入库管理的会标出,方便你一键整理或忽略。
类方法内部封装了 ObjectGetInteger、ObjectGetDouble 等终端函数,对外只暴露语义化接口,避免直接拼属性常量。
本篇铺完抽象基类后,后续会逐类实现箭头、趋势线等衍生对象,并回到基于 CCanvas 的图形面板。