115 lines
4.4 KiB
Markdown
115 lines
4.4 KiB
Markdown
## 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
|
|
|
|
- Article ID: 22540
|
|
- Author: Clemence Benjamin
|
|
- Publication date: 2026.05.17
|
|
- Category: Trading Systems
|
|
- URL: https://www.mql5.com/en/articles/22540
|
|
|
|
## 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.
|
|
|
|
2. **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
|
|
|
|
3. **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
|