194 lines
No EOL
7.6 KiB
Markdown
194 lines
No EOL
7.6 KiB
Markdown
# Article-23893-Building-AIPowered-Trading-Systems-MQL5-Part-12
|
|
|
|
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
|
|
|
|
This repository documents and references the MQL5 article **“Building AI-Powered Trading Systems in MQL5 (Part 12): Giving the Assistant Chart Vision and Tool Access.”** It is an article-derived MQL5 project focused on extending an AI trading assistant with two major capabilities:
|
|
|
|
- chart vision through screenshots and image attachments
|
|
- tool access for live terminal, market, account, and calendar data
|
|
|
|
The article describes how an Expert Advisor-based assistant can move beyond plain text chat by sending chart images to a multimodal model and by allowing the model to request specific live data through a controlled tool-calling workflow.
|
|
|
|
## Original Article
|
|
|
|
- **Article ID:** 23893
|
|
- **Title:** Building AI-Powered Trading Systems in MQL5 (Part 12): Giving the Assistant Chart Vision and Tool Access
|
|
- **Author:** Allan Munene Mutiiria
|
|
- **Publication date:** Not available
|
|
- **Categories:** Trading Systems, Integration, Expert Advisors, Statistics
|
|
- **Article URL:** https://www.mql5.com/en/articles/23893
|
|
- **Author URL:** https://www.mql5.com/en/users/29210372
|
|
|
|
## Repository Purpose
|
|
|
|
This repository exists to preserve the structure and technical ideas presented in the original article in a reusable repository format.
|
|
|
|
A reader can use this repository to:
|
|
|
|
- understand how chart screenshots can be captured and sent to an AI model from MQL5
|
|
- study a multimodal message flow that combines text and image content
|
|
- learn how tool-calling can expose controlled terminal data to an assistant
|
|
- reuse the article’s architectural ideas for MQL5 dashboard panels, image rendering, and request orchestration
|
|
- inspect the project file layout explicitly listed in the article attachments
|
|
|
|
Because this repository is article-derived, its completeness depends on the files actually attached or otherwise provided by the author.
|
|
|
|
## Key Concepts
|
|
|
|
- Trading Systems
|
|
- Integration
|
|
- Expert Advisors
|
|
- Statistics
|
|
- Multimodal AI messaging
|
|
- Chart screenshot capture
|
|
- Base64 image encoding
|
|
- Tool calling
|
|
- Live market context injection
|
|
- Chart object inspection
|
|
- Trade history summarization
|
|
- Economic calendar access
|
|
- Canvas-based UI rendering
|
|
|
|
## Algorithm / Architecture Summary
|
|
|
|
The article presents a combined UI, image-processing, and AI-integration workflow for an MQL5 assistant.
|
|
|
|
1. **Capture chart imagery**
|
|
- The assistant captures the current chart as a screenshot.
|
|
- The panel UI is temporarily hidden so the screenshot contains only the chart.
|
|
- PNG is used for request payload/archive purposes, while BMP is used for local panel display.
|
|
|
|
2. **Encode the image for transport**
|
|
- The PNG bytes are converted to base64.
|
|
- Line breaks are removed so the encoded image can be embedded safely into JSON.
|
|
|
|
3. **Stage the attachment before sending**
|
|
- A pending attachment state stores:
|
|
- image base name
|
|
- width and height
|
|
- base64 payload
|
|
- The user can attach or remove the staged screenshot before sending the message.
|
|
|
|
4. **Build multimodal request content**
|
|
- The outgoing message becomes a content array rather than plain text.
|
|
- It includes:
|
|
- a text item for the prompt
|
|
- an image item using a base64 data URL
|
|
- This allows the model to reason about actual chart visuals instead of typed descriptions only.
|
|
|
|
5. **Render image previews inside the panel**
|
|
- The local BMP copy is decoded for display.
|
|
- Thumbnails are cached using a bounded cache strategy.
|
|
- Inline thumbnails and a compose-chip preview are drawn into the dashboard.
|
|
|
|
6. **Open a full-image viewer**
|
|
- Clicking a thumbnail opens a native-resolution viewer.
|
|
- The viewer supports:
|
|
- full-resolution image display
|
|
- vertical and horizontal scrolling
|
|
- grab-pan interaction
|
|
- close controls
|
|
- This is handled through dedicated viewer state and interaction routing.
|
|
|
|
7. **Clean up image files**
|
|
- Stored chat history references image markers.
|
|
- When a chat is deleted, related PNG/BMP files are also deleted.
|
|
|
|
8. **Define callable tools for the model**
|
|
- The article defines a JSON tool menu for the model with functions for:
|
|
- indicator retrieval
|
|
- open positions
|
|
- chart objects
|
|
- trade history
|
|
- economic calendar events
|
|
|
|
9. **Dispatch tool calls inside MQL5**
|
|
- Tool-call arguments are parsed from JSON.
|
|
- A dispatcher routes the request to the appropriate MQL5 function.
|
|
- Tool results are returned as readable text rather than raw binary or complex structures.
|
|
|
|
10. **Attach automatic market context**
|
|
- A live market snapshot can be appended automatically to each message.
|
|
- This context includes current symbol/timeframe details, prices, recent candles, positions, and account status.
|
|
|
|
11. **Run a tool-call loop during send**
|
|
- The assistant sends the request with optional vision content and tool definitions.
|
|
- If the model responds with tool calls:
|
|
- the terminal executes each requested tool
|
|
- tool outputs are appended to the conversation
|
|
- the request loop continues until the model returns final text or the round limit is reached
|
|
|
|
Overall, the architecture combines a chart-facing UI layer, an image handling pipeline, a tool exposure layer, and a controlled model interaction loop.
|
|
|
|
## Mentioned or Attached Files
|
|
|
|
### Explicitly attached files
|
|
|
|
The article explicitly lists these attached files:
|
|
|
|
- `AI Canvas Theme.mqh`
|
|
- `AI Canvas Primitives.mqh`
|
|
- `AI JSON FILE.mqh`
|
|
- `AI Canvas State.mqh`
|
|
- `AI Canvas Scrollbar.mqh`
|
|
- `AI Canvas Editor.mqh`
|
|
- `AI Canvas Render.mqh`
|
|
- `AI Logic.mqh`
|
|
- `AI Canvas Interact.mqh`
|
|
- `AI Canvas Shell.mqh`
|
|
- `AI EA PART 12.mq5`
|
|
- `MQL5.zip`
|
|
|
|
### ZIP attachment
|
|
|
|
An attached ZIP archive is available in the processed input:
|
|
|
|
- `https://www.mql5.com/en/articles/download/23893_271278.zip?s=0cee6d030d20a2b0f90ab6d2f4d447bafd07f9c216585854de7d946f8ee1b136&t=1790945720`
|
|
|
|
### Files mentioned in text
|
|
|
|
The article also mentions internal image storage outputs used by the implementation:
|
|
|
|
- PNG screenshot copies
|
|
- BMP screenshot copies
|
|
|
|
## Statistics
|
|
|
|
- **Word count:** Not available
|
|
- **Reading time:** Not available
|
|
- **Image count:** Not available
|
|
- **Code block count:** Not available
|
|
- **File count:** Not available
|
|
|
|
## Tags
|
|
|
|
- mql5
|
|
- metatrader-5
|
|
- trading-systems
|
|
- integration
|
|
- expert-advisors
|
|
- statistics
|
|
- difficulty-advanced
|
|
|
|
## Difficulty
|
|
|
|
**Advanced**
|
|
|
|
Reason: the article combines MQL5 UI rendering, chart screenshot handling, base64 encoding, JSON request construction, multimodal AI messaging, tool schema design, live terminal data extraction, and iterative tool-call orchestration.
|
|
|
|
## Limitations
|
|
|
|
- This repository is derived from the article and may not reproduce the full original project unless the attached files are included here.
|
|
- The implementation depends on files actually attached or provided by the author.
|
|
- The README is based on article metadata and article content analysis, not on verification of every attached source file inside the ZIP archive.
|
|
- Internal ZIP contents were described in the article, but repository completeness still depends on what was actually extracted and committed.
|
|
- The project should not be assumed production-ready unless explicitly stated by the original author, which was not established in the processed input.
|
|
|
|
## Reference
|
|
|
|
- Original article: https://www.mql5.com/en/articles/23893
|
|
- Author profile: https://www.mql5.com/en/users/29210372 |