Nessuna descrizione
Vai al file
2026-06-01 20:52:43 +01:00
Article-22742-EquiVolume-Indicator-In-MQL5.mq5 Initial commit: EquiVolume indicator and project documentation 2026-06-01 20:52:43 +01:00
Article-22742-EquiVolume-Indicator-In-MQL5.mqproj Initial commit: EquiVolume indicator and project documentation 2026-06-01 20:52:43 +01:00
README.md Initial commit: EquiVolume indicator and project documentation 2026-06-01 20:52:43 +01:00

Article-22742-EquiVolume-Indicator-In-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

This project is a reference reconstruction of an MQL5 custom indicator that implements an EquiVolume-style visualization. Instead of fixed-width candles, it draws volume-weighted rectangles in a separate indicator window, where candle height represents price range and candle width represents relative trading activity over a configurable lookback period.

The article describes the implementation incrementally and provides code fragments for key parts of the indicator logic.

Original Article

Repository Purpose

The purpose of this repository is to preserve and document the article’s EquiVolume indicator design as a technical reference project.

Based on the processed material, the indicator aims to:

  • choose between real volume and tick volume automatically;
  • find the maximum volume in a lookback range;
  • normalize candle volumes against that maximum;
  • convert normalized volume into horizontal box width;
  • draw candle range and candle body as rectangle objects;
  • render the result in a separate indicator subwindow;
  • remove outdated objects to keep the display limited to the active range.

Key Concepts

  • EquiVolume visualization: candle width reflects volume rather than being fixed.
  • Volume source fallback: use real volume when available, otherwise tick volume.
  • Lookback-based scaling: maximum volume is determined only within the selected historical window.
  • Dynamic vertical scaling: indicator window min/max are set from the highest high and lowest low in the range.
  • Object-based rendering: rectangles are used instead of standard indicator buffers.
  • Incremental redraw control: calculations are run once per new candle using a stored bar timestamp.
  • Bullish/bearish body coloring: candle body fill depends on close vs. open.

Algorithm / Architecture Summary

The article describes the following architecture:

  1. Indicator setup
  • Declare a separate-window indicator with no standard plots.
  • Define inputs such as lookback, bull/bear colors, outline color, and maximum width scaling.
  • Store the indicator subwindow index with ChartWindowFind().
  1. Execution timing
  • In OnCalculate(), limit processing to the configured lookback.
  • Run the main logic only once per new candle using a lastTradeBarTime check.
  1. Volume source selection
  • Detect whether broker-provided real volume is available.
  • Fall back to tick volume if real volume is unavailable.
  1. Reference range scan
  • Scan the lookback range to determine:
  • maximum volume;
  • highest high;
  • lowest low.
  1. Indicator scale update
  • Set INDICATOR_MAXIMUM and INDICATOR_MINIMUM from the observed price extremes.
  1. Volume normalization
  • For each closed candle in the range, compute a width factor:
  • width = volume / maxVolume * InpMaxWidthPct
  • Skip zero-volume candles.
  1. Rectangle drawing
  • Draw one rectangle for the candle’s full high-low range.
  • Draw a second filled rectangle for the open-close body.
  • Reuse existing objects when possible rather than recreating them.
  1. Horizontal chaining
  • Use time coordinates to place each rectangle.
  • Move the next candle’s starting point to the previous candle’s endpoint so boxes connect sequentially.
  1. Cleanup
  • Delete old rectangle objects outside the active display range.
  • Clear box objects during initialization and deinitialization.

Mentioned or Attached Files

Explicitly attached files

No attached source files were available in the processed input.

Files mentioned in the article text

The article provides inline MQL5 code fragments for an indicator implementation, including:

  • an indicator source containing:
  • OnInit()
  • OnCalculate()
  • OnDeinit()
  • DrawBox(...)
  • BoxEmptyName(...)
  • BoxFillName(...)

No concrete filename was provided in the processed input.

Statistics

  • Code availability: Partial, from article excerpts only
  • Implementation type: Custom indicator
  • Rendering method: Chart rectangle objects in a separate indicator window
  • Primary data inputs: Open, high, low, close, tick volume, real volume
  • Configurable inputs mentioned: 5
  • InpLookback
  • InpBullColor
  • InpBearColor
  • InpOutlineColor
  • InpMaxWidthPct

Tags

MQL5 Indicator EquiVolume Volume-Analysis Custom-Charting MetaTrader-5 Object-Drawing Technical-Analysis

Difficulty

Intermediate

The article assumes familiarity with:

  • MQL5 indicator lifecycle functions;
  • timeseries arrays in OnCalculate();
  • chart object APIs such as ObjectCreate, ObjectMove, and ObjectsDeleteAll;
  • subwindow rendering and indicator scaling.

Limitations

  • The full original source code is not available in the processed input.
  • The article content includes incremental code excerpts, not a clearly attached complete project file.
  • Because no explicit repository file list was attached, this README presents the project as a reference/reconstruction rather than a verified full reproduction.
  • Some implementation details may require validation in a real .mq5 file, especially object cleanup behavior and subwindow object management.

Reference

This README is based solely on the processed article text describing an MQL5 EquiVolume indicator implemented with rectangle objects, dynamic price scaling, and volume-normalized candle widths.