Article-22540-Chart-Object-.../README.md
2026-06-02 15:27:00 +00:00

4.4 KiB

Article-22540-Chart-Object-Detection-MQL5

This repository is an article-derived reference project based on the original MQL5 article. It does not claim to reproduce the full original source code unless files are explicitly attached.

Overview

Reference repository for an MQL5 chart-object detection framework that converts manually drawn analytical objects into structured data consumable by Expert Advisors.

The article describes a lightweight detector built around raw MQL5 chart-object APIs such as ObjectsTotal(), ObjectName(), ObjectGetInteger(), and ObjectGetDouble(). It focuses on detecting analytical objects like trendlines, rectangles, channels, horizontal lines, vertical lines, and selected Fibonacci objects, then normalizing their coordinates into a single structure.

Original Article

Repository Purpose

  • Preserve the article’s described implementation as a reusable reference.
  • Provide a compact reconstruction target for:
  • CChartObjectDetector
  • SChartObjectInfo
  • a simple polling-based test EA
  • Help developers integrate manually drawn chart objects into algorithmic logic for alerts, validation, or trading decisions.

Key Concepts

  • Iteration over all chart objects via object index
  • Filtering analytical objects from non-analytical UI/chart elements
  • Normalization of heterogeneous object geometries into one structure
  • Use of indexed properties:
  • OBJPROP_TIME
  • OBJPROP_PRICE
  • Support for multiple object classes:
  • OBJ_TREND
  • OBJ_RECTANGLE
  • OBJ_CHANNEL
  • OBJ_HLINE
  • OBJ_VLINE
  • OBJ_FIBO and related Fibonacci variants in extraction logic
  • Periodic polling from an EA using OnTick() with throttling

Algorithm / Architecture Summary

The article presents a three-stage pipeline:

  1. Filter
  • Enumerate all chart objects on a target chart.
  • Keep only supported analytical object types.
  1. Extract
  • Read time/price anchors using raw property access.
  • Use indexed access for multi-point objects.
  • Handle object-type-specific extraction rules:
  • trend/channel/rectangle: two anchors
  • horizontal line: price only
  • vertical line: time only
  • Fibonacci: anchor points only in this version
  1. Store
  • Populate a normalized SChartObjectInfo record with:
  • object name
  • numeric type
  • readable type name
  • time1, time2
  • price1, price2

The detector is encapsulated in CChartObjectDetector, with an Init() method for chart binding and a Detect() method returning an array of normalized objects.

The test EA initializes the detector on the current chart and logs detected objects every 5 seconds.

Mentioned or Attached Files

Explicitly attached files

  • ChartObjectDetector.mqh — include file containing the detection class and normalized object structure
  • ObjectDetectionTestEA.mq5 — test Expert Advisor that polls detection results and prints them to the Experts log

Files mentioned in text

  • MQL5/Include/ChartObjectsAlgorithms/ChartObjectDetector.mqh — target include path referenced by the article
  • MQL5/Experts/ObjectDetectionTestEA.mq5 — target EA path referenced by the article

Statistics

  • Sections: 5
  • Main implementation artifacts described: 2
  • Supported analytical object categories discussed: 6+
  • Detection cadence in test EA: every 5 seconds
  • Public detector methods shown: Init(), Total(), Detect()

Tags

mql5, expert-advisor, chart-objects, object-detection, trendline, fibonacci, technical-analysis, automation

Difficulty

Intermediate

Limitations

  • The full original repository structure is not available unless the article attachments are separately provided in this project.
  • This is an article-derived reference/reconstruction project.
  • Fibonacci handling is incomplete in the described version:
  • anchor points are read
  • level extraction is deferred to a later part
  • The detector uses polling and does not yet react to chart object events automatically.
  • Non-analytical objects such as labels, buttons, and other UI elements are intentionally ignored.
  • The article text shows a minor inconsistency between extraction logic and filtering scope for some Fibonacci variants; implementation should follow the actual attached code if present.

Reference

Original MQL5 article: https://www.mql5.com/en/articles/22540