DoEasy 函数库中的图形(第八十二部分):函数库对象重构和图形对象集合·进阶篇
🧩

DoEasy 函数库中的图形(第八十二部分):函数库对象重构和图形对象集合·进阶篇

(2/3)· 手工画的线也能被程序识别?本篇让函数库接管所有图表图形对象

实战向 第 2/3 篇
很多人以为 EA 只能管自己画的线,终端里手动拖进去的图形永远是个黑盒。一旦手工对象和程序对象混在同一图表,删除和追踪就会漏掉一半。本篇要做的,正是把这部分盲区收进函数库的集合列表。

◍ 图形对象的枚举偏移写法

在 MT5 自定义控件库里,标准图表对象被统一映射成一套内部枚举值,方便和自有面板元素区分。核心规律是:在基础控件标识 OBJECT_DE_TYPE_GELEMENT_CONTROL 之上再加 1,然后叠加上 MT5 原生对象常量(如 OBJ_GANNGRID、OBJ_FIBO),就得到该图形对应的扩展类型码。 下面这段定义覆盖了我们常用的江恩网格、斐波那契系列、艾略特波浪以及箭头标注等对象。比如 OBJECT_DE_TYPE_GSTD_FIBO 对应原生斐波那契水平位,OBJECT_DE_TYPE_GSTD_ELLIOTWAVE5 对应五浪结构,OBJECT_DE_TYPE_GSTD_ARROW_UP 对应向上箭头。 你直接在 MT5 的 MQH 头文件里搜 OBJECT_DE_TYPE_GELEMENT_CONTROL,把这套偏移定义抄进自己的 EA 面板工程,就能用统一 switch 分支处理用户从图表拖进来的各类对象。外汇与贵金属波动剧烈,这类对象映射只解决识别问题,不预示任何方向。

MQL5 / C++
  OBJECT_DE_TYPE_GSTD_GANNGRID           =  OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_GANNGRID,           class=class="str">"cmt">// "Gann grid" object type
  OBJECT_DE_TYPE_GSTD_FIBO                =  OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_FIBO,                class=class="str">"cmt">// "Fibo levels" object type
  OBJECT_DE_TYPE_GSTD_FIBOTIMES           =  OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_FIBOTIMES,           class=class="str">"cmt">// "Fibo time zones" object type
  OBJECT_DE_TYPE_GSTD_FIBOFAN             =  OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_FIBOFAN,             class=class="str">"cmt">// "Fibo fan" object type
  OBJECT_DE_TYPE_GSTD_FIBOARC             =  OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_FIBOARC,             class=class="str">"cmt">// "Fibo arcs" object type
  OBJECT_DE_TYPE_GSTD_FIBOCHANNEL         =  OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_FIBOCHANNEL,         class=class="str">"cmt">// "Fibo channel" object type
  OBJECT_DE_TYPE_GSTD_EXPANSION           =  OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_EXPANSION,           class=class="str">"cmt">// "Fibo expansion" object type
  OBJECT_DE_TYPE_GSTD_ELLIOTWAVE5         =  OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_ELLIOTWAVE5,         class=class="str">"cmt">// "Elliott class="num">5 waves" object type
  OBJECT_DE_TYPE_GSTD_ELLIOTWAVE3         =  OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_ELLIOTWAVE3,         class=class="str">"cmt">// "Elliott class="num">3 waves" object type
  OBJECT_DE_TYPE_GSTD_RECTANGLE           =  OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_RECTANGLE,           class=class="str">"cmt">// "Rectangle" object type
  OBJECT_DE_TYPE_GSTD_TRIANGLE            =  OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_TRIANGLE,            class=class="str">"cmt">// "Triangle" object type
  OBJECT_DE_TYPE_GSTD_ELLIPSE             =  OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_ELLIPSE,             class=class="str">"cmt">// "Ellipse" object type
  OBJECT_DE_TYPE_GSTD_ARROW_THUMB_UP      =  OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_ARROW_THUMB_UP,      class=class="str">"cmt">// "Thumb up" object type
  OBJECT_DE_TYPE_GSTD_ARROW_THUMB_DOWN    =  OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_ARROW_THUMB_DOWN,    class=class="str">"cmt">// "Thumb down" object type
  OBJECT_DE_TYPE_GSTD_ARROW_UP            =  OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_ARROW_UP,            class=class="str">"cmt">// "Arrow up" object type
  OBJECT_DE_TYPE_GSTD_ARROW_DOWN          =  OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_ARROW_DOWN,          class=class="str">"cmt">// "Arrow down" object type
  OBJECT_DE_TYPE_GSTD_ARROW_STOP          =  OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_ARROW_STOP,          class=class="str">"cmt">// "Stop sign" object type
  OBJECT_DE_TYPE_GSTD_ARROW_CHECK         =  OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_ARROW_CHECK,         class=class="str">"cmt">// "Check mark" object type
  OBJECT_DE_TYPE_GSTD_ARROW_LEFT_PRICE    =  OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_ARROW_LEFT_PRICE,    class=class="str">"cmt">// "Left price label" object type

图形控件与库对象的类型枚举衔接

在自定义图形库里,所有标准控件类型都挂在 OBJECT_DE_TYPE_GELEMENT_CONTROL 之上,用 +1 再叠加具体 OBJ_* 宏来定义。例如右侧价格标签是 CONTROL+1+OBJ_ARROW_RIGHT_PRICE,买入信号箭头是 CONTROL+1+OBJ_ARROW_BUY,卖出信号则是 CONTROL+1+OBJ_ARROW_SELL,依次类推覆盖文本、标签、按钮、图表、位图、编辑框、财经日历事件等 14 种基础图形元素。 这些 GSTD 前缀类型只是“控件层”映射,真正库对象的基类从 OBJECT_DE_TYPE_GSTD_RECTANGLE_LABEL+1 开始:OBJECT_DE_TYPE_BASE 作为所有库对象的基类型,其后再派生 OBJECT_DE_TYPE_BASE_EXT 扩展基类型,以及 OBJECT_DE_TYPE_ACCOUNT(账户对象)、OBJECT_DE_TYPE_BOOK_ORDER(订单簿对象)等。 开 MT5 在 Include 里搜 OBJECT_DE_TYPE_GELEMENT_CONTROL,把这段枚举贴进自有面板工程,就能直接复用标准控件 ID,不必从头定义箭头和标签类型。外汇与贵金属图表上叠加这类自定义对象时波动剧烈,实盘前请在策略测试器跑通事件响应逻辑。

MQL5 / C++
OBJECT_DE_TYPE_GSTD_ARROW_RIGHT_PRICE = OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_ARROW_RIGHT_PRICE, class=class="str">"cmt">// "Right price label" object type
OBJECT_DE_TYPE_GSTD_ARROW_BUY          = OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_ARROW_BUY,           class=class="str">"cmt">// "Buy sign" object type
OBJECT_DE_TYPE_GSTD_ARROW_SELL         = OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_ARROW_SELL,         class=class="str">"cmt">// "Sell sign" object type
OBJECT_DE_TYPE_GSTD_ARROW              = OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_ARROW,              class=class="str">"cmt">// "Arrow" object type
OBJECT_DE_TYPE_GSTD_TEXT               = OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_TEXT,              class=class="str">"cmt">// "Text" object type
OBJECT_DE_TYPE_GSTD_LABEL              = OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_LABEL,             class=class="str">"cmt">// "Text label" object type
OBJECT_DE_TYPE_GSTD_BUTTON             = OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_BUTTON,            class=class="str">"cmt">// "Button" object type
OBJECT_DE_TYPE_GSTD_CHART              = OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_CHART,             class=class="str">"cmt">// "Chart" object type
OBJECT_DE_TYPE_GSTD_BITMAP             = OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_BITMAP,            class=class="str">"cmt">// "Bitmap" object type
OBJECT_DE_TYPE_GSTD_BITMAP_LABEL       = OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_BITMAP_LABEL,     class=class="str">"cmt">// "Bitmap label" object type
OBJECT_DE_TYPE_GSTD_EDIT               = OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_EDIT,              class=class="str">"cmt">// "Input field" object type
OBJECT_DE_TYPE_GSTD_EVENT              = OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_EVENT,             class=class="str">"cmt">// "Event object which corresponds to an event in Economic Calendar" object type
OBJECT_DE_TYPE_GSTD_RECTANGLE_LABEL    = OBJECT_DE_TYPE_GELEMENT_CONTROL+class="num">1+OBJ_RECTANGLE_LABEL,   class=class="str">"cmt">// "Rectangle Label object used to create and design the custom graphical interface" object type

class=class="str">"cmt">//--- Objects
OBJECT_DE_TYPE_BASE  = OBJECT_DE_TYPE_GSTD_RECTANGLE_LABEL+class="num">1, class=class="str">"cmt">// Base object for all library objects
OBJECT_DE_TYPE_BASE_EXT,                                     class=class="str">"cmt">// Extended base object for all library objects

OBJECT_DE_TYPE_ACCOUNT,                                      class=class="str">"cmt">// "Account" object type
OBJECT_DE_TYPE_BOOK_ORDER,                                   class=class="str">"cmt">// "Book order" object type

「深度事件对象类型的枚举划分」

在 MT5 的深层事件(Depth of Events)体系里,对象类型用一组枚举常量做精确区分,方便脚本按类别过滤和响应。上面这段声明把挂单簿、图表、账户事件、指标缓冲区四类对象拆成了独立标识符。 OBJECT_DE_TYPE_BOOK_BUY 到 OBJECT_DE_TYPE_BOOK_SERIES 覆盖限价买卖单、市价买卖单、簿快照及快照序列;OBJECT_DE_TYPE_CHART 系列指向主图、子窗口及其上的指标实例。 事件类里,OBJECT_DE_TYPE_EVENT_BALANCE 对应入金出金等余额变动,OBJECT_DE_TYPE_EVENT_ORDER_PLASED(原文拼写如此,实为 placed)与 REMOVED 分别捕捉挂单的放置与撤销,POSITION_OPEN / CLOSE 则标记持仓的开平。 指标侧有三类缓冲:IND_BUFFER 通用数值、IND_BUFFER_ARROW 箭头绘制、IND_BUFFER_BAR 柱形绘制。开 MT5 在 MetaEditor 搜 OBJECT_DE_TYPE 可核对全部 20 余个常量,改 EA 时按类型过滤事件能少写大量判断分支。外汇与贵金属杠杆品种波动剧烈,这类对象监听仅作技术辅助,实盘仍属高风险。

MQL5 / C++
  OBJECT_DE_TYPE_BOOK_BUY,                                                                         class=class="str">"cmt">// "Book buy order" object type
  OBJECT_DE_TYPE_BOOK_BUY_MARKET,                                                                   class=class="str">"cmt">// "Book buy order at market price" object type
  OBJECT_DE_TYPE_BOOK_SELL,                                                                         class=class="str">"cmt">// "Book sell order" object type
  OBJECT_DE_TYPE_BOOK_SELL_MARKET,                                                                  class=class="str">"cmt">// "Book sell order at market price" object type
  OBJECT_DE_TYPE_BOOK_SNAPSHOT,                                                                     class=class="str">"cmt">// "Book snapshot" object type
  OBJECT_DE_TYPE_BOOK_SERIES,                                                                       class=class="str">"cmt">// "Book snapshot series" object type

  OBJECT_DE_TYPE_CHART,                                                                             class=class="str">"cmt">// "Chart" object type
  OBJECT_DE_TYPE_CHART_WND,                                                                         class=class="str">"cmt">// "Chart window" object type
  OBJECT_DE_TYPE_CHART_WND_IND,                                                                     class=class="str">"cmt">// "Chart window indicator" object type

  OBJECT_DE_TYPE_EVENT,                                                                             class=class="str">"cmt">// "Event" object type
  OBJECT_DE_TYPE_EVENT_BALANCE,                                                                     class=class="str">"cmt">// "Balance operation event" object type
  OBJECT_DE_TYPE_EVENT_MODIFY,                                                                      class=class="str">"cmt">// "Pending order/position modification event" object type
  OBJECT_DE_TYPE_EVENT_ORDER_PLASED,                                                                class=class="str">"cmt">// "Placing a pending order event" object type
  OBJECT_DE_TYPE_EVENT_ORDER_REMOVED,                                                               class=class="str">"cmt">// "Pending order removal event" object type
  OBJECT_DE_TYPE_EVENT_POSITION_CLOSE,                                                              class=class="str">"cmt">// "Position closure event" object type
  OBJECT_DE_TYPE_EVENT_POSITION_OPEN,                                                               class=class="str">"cmt">// "Position opening event" object type

  OBJECT_DE_TYPE_IND_BUFFER,                                                                        class=class="str">"cmt">// "Indicator buffer" object type
  OBJECT_DE_TYPE_IND_BUFFER_ARROW,                                                                  class=class="str">"cmt">// "Arrow rendering buffer" object type
  OBJECT_DE_TYPE_IND_BUFFER_BAR                                                                     class=class="str">"cmt">// "Bar buffer" object type

◍ 指标对象枚举里的缓冲与具体指标类型

在 MT5 的图形对象枚举体系里,有一批以 OBJECT_DE_TYPE_IND_BUFFER_ 开头的常量,专门描述指标内部缓冲区的绘制形态。比如 _CALCULATE 对应「计算缓冲」、_CANDLE 对应「K线缓冲」、_FILLING 对应「填充缓冲」、_HISTOGRAMM 与 _HISTOGRAMM2 分别对应单/双直方图缓冲、_LINE 是线形缓冲、_SECTION 是分段缓冲、_ZIGZAG 是之字缓冲。 另一批 OBJECT_DE_TYPE_IND_ 开头的常量则直接指向具体指标对象:_AC 是加速震荡器、_AD 是聚散指标、_ADX 与 _ADXW 分别是标准 ADX 与 Wilder 平滑版 ADX、_ALLIGATOR 是鳄鱼线、_AMA 是自适应均线、_AO 是动量震荡器、_ATR 是平均真实波幅。 写 EA 或脚本做图表对象遍历时,用这些枚举做类型判断比硬编码字符串稳妥,MT5 终端里按 F4 打开 MetaEditor 搜 OBJECT_DE_TYPE_IND 就能看到完整列表,目前缓冲类至少有 9 种、具体指标类仅上面已列就有 11 种。

MQL5 / C++
OBJECT_DE_TYPE_IND_BUFFER_CALCULATE,              class=class="str">"cmt">// "Calculated buffer" object type
OBJECT_DE_TYPE_IND_BUFFER_CANDLE,               class=class="str">"cmt">// "Candle buffer" object type
OBJECT_DE_TYPE_IND_BUFFER_FILLING,              class=class="str">"cmt">// "Filling buffer" object type
OBJECT_DE_TYPE_IND_BUFFER_HISTOGRAMM,           class=class="str">"cmt">// "Histogram buffer" object type
OBJECT_DE_TYPE_IND_BUFFER_HISTOGRAMM2,          class=class="str">"cmt">// "Histogram class="num">2 buffer" object type
OBJECT_DE_TYPE_IND_BUFFER_LINE,                 class=class="str">"cmt">// "Line buffer" object type
OBJECT_DE_TYPE_IND_BUFFER_SECTION,              class=class="str">"cmt">// "Section buffer" object type
OBJECT_DE_TYPE_IND_BUFFER_ZIGZAG,               class=class="str">"cmt">// "Zigzag buffer" object type
OBJECT_DE_TYPE_INDICATOR,                       class=class="str">"cmt">// "Indicator" object type
OBJECT_DE_TYPE_IND_DATA,                        class=class="str">"cmt">// "Indicator data" object type
OBJECT_DE_TYPE_IND_DATA_LIST,                   class=class="str">"cmt">// "Indicator data list" object type

OBJECT_DE_TYPE_IND_AC,                          class=class="str">"cmt">// "Accelerator Oscillator indicator" object type
OBJECT_DE_TYPE_IND_AD,                          class=class="str">"cmt">// "Accumulation/Distribution indicator" object type
OBJECT_DE_TYPE_IND_ADX,                         class=class="str">"cmt">// "Average Directional Index indicator" object type
OBJECT_DE_TYPE_IND_ADXW,                        class=class="str">"cmt">// "ADX indicator by Welles Wilder" object type
OBJECT_DE_TYPE_IND_ALLIGATOR,                   class=class="str">"cmt">// "Alligator indicator" object type
OBJECT_DE_TYPE_IND_AMA,                         class=class="str">"cmt">// "Adaptive Moving Average indicator" object type
OBJECT_DE_TYPE_IND_AO,                          class=class="str">"cmt">// "Awesome Oscillator indicator" object type
OBJECT_DE_TYPE_IND_ATR,                         class=class="str">"cmt">// "Average True Range" object type

指标对象枚举的底层命名映射

在 MT5 的图表对象体系里,每一类内置指标都对应一个 OBJECT_DE_TYPE_IND_* 的枚举常量,用于图形资源销毁或遍历时精准识别对象类型。 上面这段声明覆盖了从布林带、熊力/牛力,到 CCI、Chaikin、自定义指标、DEMA、DeMarker、包络线、力指数、分形、FRAMA、Gator、一目均衡以及最基础的 MA 与 MACD,共 19 种指标对象类型。 如果你在 EA 里用 ChartGetInteger 配合 OBJPROP_TYPE 扫图,拿到的值落在这段枚举区间时,就可以直接 switch 分流处理,而不用靠对象名称字符串去猜。 外汇与贵金属品种波动剧烈,用这类枚举做对象清理前务必确认周期与品种上下文,误删指标可能导致策略信号断层。

MQL5 / C++
  OBJECT_DE_TYPE_IND_BANDS,                                                                       class=class="str">"cmt">// "Bollinger Bands® indicator" object type
  OBJECT_DE_TYPE_IND_BEARS,                                                                       class=class="str">"cmt">// "Bears Power indicator" object type
  OBJECT_DE_TYPE_IND_BULLS,                                                                       class=class="str">"cmt">// "Bulls Power indicator" object type
  OBJECT_DE_TYPE_IND_BWMFI,                                                                       class=class="str">"cmt">// "Market Facilitation Index indicator" object type
  OBJECT_DE_TYPE_IND_CCI,                                                                         class=class="str">"cmt">// "Commodity Channel Index indicator" object type
  OBJECT_DE_TYPE_IND_CHAIKIN,                                                                     class=class="str">"cmt">// "Chaikin Oscillator indicator" object type
  OBJECT_DE_TYPE_IND_CUSTOM,                                                                      class=class="str">"cmt">// "Custom indicator" object type
  OBJECT_DE_TYPE_IND_DEMA,                                                                        class=class="str">"cmt">// "Double Exponential Moving Average indicator" object type
  OBJECT_DE_TYPE_IND_DEMARKER,                                                                    class=class="str">"cmt">// "DeMarker indicator" object type
  OBJECT_DE_TYPE_IND_ENVELOPES,                                                                   class=class="str">"cmt">// "Envelopes indicator" object type
  OBJECT_DE_TYPE_IND_FORCE,                                                                       class=class="str">"cmt">// "Force Index indicator" object type
  OBJECT_DE_TYPE_IND_FRACTALS,                                                                    class=class="str">"cmt">// "Fractals indicator" object type
  OBJECT_DE_TYPE_IND_FRAMA,                                                                       class=class="str">"cmt">// "Fractal Adaptive Moving Average indicator" object type
  OBJECT_DE_TYPE_IND_GATOR,                                                                       class=class="str">"cmt">// "Gator Oscillator indicator" object type
  OBJECT_DE_TYPE_IND_ICHIMOKU,                                                                    class=class="str">"cmt">// "Ichimoku Kinko Hyo indicator" object type
  OBJECT_DE_TYPE_IND_MA,                                                                          class=class="str">"cmt">// "Moving Average indicator" object type
  OBJECT_DE_TYPE_IND_MACD,                                                                        class=class="str">"cmt">// "Moving Average Convergence/Divergence indicator" object type

「枚举尾部那些指标与账户对象的类型常量」

上面这组 OBJECT_DE_TYPE 常量把 MQL5 图形对象里剩余的指标类别和账户类对象都列全了,从 MFI 到 WPR 一共 14 个指标类型,外加信号、订单/成交/持仓、历史余额三种非指标对象。 在写拖拽式分析面板时,若要根据用户丢进图表的对象自动识别类型,直接拿这些枚举做 switch 判断即可,比用字符串比对省事且不易拼错。 外汇与贵金属杠杆高、滑点随机,这类对象识别逻辑只解决'是什么',不预示任何方向;真要拿去触发下单,先在 MT5 策略测试器里用历史数据跑一遍类型映射是否漏判。

MQL5 / C++
  OBJECT_DE_TYPE_IND_MFI,                                                                     class=class="str">"cmt">// "Money Flow Index indicator" object type
  OBJECT_DE_TYPE_IND_MOMENTUM,                                                                 class=class="str">"cmt">// "Momentum indicator" object type
  OBJECT_DE_TYPE_IND_OBV,                                                                      class=class="str">"cmt">// "On Balance Volume indicator" object type
  OBJECT_DE_TYPE_IND_OSMA,                                                                     class=class="str">"cmt">// "Moving Average of Oscillator indicator" object type
  OBJECT_DE_TYPE_IND_RSI,                                                                      class=class="str">"cmt">// "Relative Strength Index indicator" object type
  OBJECT_DE_TYPE_IND_RVI,                                                                      class=class="str">"cmt">// "Relative Vigor Index indicator" object type
  OBJECT_DE_TYPE_IND_SAR,                                                                      class=class="str">"cmt">// "Parabolic SAR indicator" object type
  OBJECT_DE_TYPE_IND_STDEV,                                                                    class=class="str">"cmt">// "Standard Deviation indicator" object type
  OBJECT_DE_TYPE_IND_STOCH,                                                                    class=class="str">"cmt">// "Stochastic Oscillator indicator" object type
  OBJECT_DE_TYPE_IND_TEMA,                                                                     class=class="str">"cmt">// "Triple Exponential Moving Average indicator" object
  OBJECT_DE_TYPE_IND_TRIX,                                                                     class=class="str">"cmt">// "Triple Exponential Moving Averages Oscillator indicator" object type
  OBJECT_DE_TYPE_IND_VIDYA,                                                                    class=class="str">"cmt">// "Variable Index Dynamic Average indicator" object type
  OBJECT_DE_TYPE_IND_VOLUMES,                                                                  class=class="str">"cmt">// "Volumes indicator" object type
  OBJECT_DE_TYPE_IND_WPR,                                                                      class=class="str">"cmt">// "Williams&class="macro">#x27; Percent Range indicator" object type

  OBJECT_DE_TYPE_MQL5_SIGNAL,                                                                  class=class="str">"cmt">// "mql5 signal" object type

  OBJECT_DE_TYPE_ORDER_DEAL_POSITION,                                                          class=class="str">"cmt">// "Order/Deal/Position" object type
  OBJECT_DE_TYPE_HISTORY_BALANCE,                                                              class=class="str">"cmt">// "Historical balance operation" object type
让小布替你跑这套
这些对象追踪与集合维护的脏活,小布盯盘的 AIGC 已内置,打开对应品种页即可看到图形归属与父子指针状态,你只管判断信号。

常见问题

双向指针让对象能定位自己创建的图形,图形也能回溯来源,便于批量更新与清理,避免孤儿对象残留。
可以,小布盯盘的品种页会把程序对象与手工对象分开标注,并呈现实例来源,省去自己写追踪计时器的成本。
集合类需轮询已开图表的标准对象增删事件,为其生成对应程序包装对象后再入列,从而实现统一管控。
区分后可在批量删除时保留人工标注,或在回测中忽略手工线,降低误操作概率。
多为集合类的计时器细化与多图表同步,完整应用见《DoEasy 图形重构·实战篇》。