The indicator reflects the size of the bar. The size is calculated by the following formula: "minuend" minus "deduction". "Minuend" and "deduction" can be any of four values (open, high, low or close).
The number of bars for which the size is displayed can be limited in the input parameters (InpNumberOfBars). This number remains unchanged even if a new bar has opened:
Graphical objects accounting
The names of objects are stored in the m_arr_names array, its size is equal to the InpNumberOfBars input. Why do we use an array instead of a simple string variable? This is a kind of reserve for the future.
Forming an object name
The name of the object corresponding to the 'index' bar is formed by the following formula:
name[index] = m_prefix + ("high_" or "low_") + TimeToString(time[index])
When you need to delete all objects
Therefore, we completely delete created graphical objects:
We also clear the m_arr_names array:
Maintaining a constant number of graphical objects:
when a new bar (bars) appears, the prev_calculated!=rates_total condition triggers. In this case, all objects are deleted, and the m_arr_names array is cleared.
Translated from Russian by MetaQuotes Software Corp.
Original code: https://www.mql5.com/ru/code/18269
All information about the current symbol (information from the CSymbolInfo class object is used) represented as a dialog panel.RSI and Bollinger Bands
A trading strategy based on RSI and Bollinger Bands.