Attachments forums

List of attachments posted on this forum.


All files on forums: 135966

Re: Volume Indicators for MT4

kvak, Sat Feb 24, 2024 6:52 am

ixion700 wrote: Fri Feb 16, 2024 10:05 pm Hello dear @kvak. I was trying to find a proper couple for mrtools' tdfi tv that i came across this nice OBV histo indicator made by you. The other indicator attached uses variants of OBV. I wanna ask is it possible to add those variants as an option to your OBV indicator? Im eager to compare the results specially with that second variant. My deep gratitude and best regards.
On Balance Volume Histogram with Alternative OBV Calculation Options

Here is your mod which includes the three variants below:
  • The Classic OBV formula

    Code: Select all

                {
                   double prev = out[pos + 1] == EMPTY_VALUE ? tick_volume[pos + 1] : out[pos + 1];
                   if (close[pos] > close[pos + 1])
                   {
                      out[pos] = out[pos + 1] + tick_volume[pos];
                   }
                   else if (close[pos] < close[pos + 1])
                   {
                      out[pos] = out[pos + 1] - tick_volume[pos];
                   }
                   else
                   {
                      out[pos] = out[pos + 1];
                   }
                }
                break;
  • Alternative Version 1

    Code: Select all

                {
                   if (high[pos] == low[pos] || open[pos] == close[pos] || close[pos] == close[pos + 1])
                   {
                      out[pos] = out[pos + 1];
                   }
                   else
                   {
                      if (close[pos] > open[pos])
                      {
                         out[pos] = out[pos + 1] + (tick_volume[pos] * (close[pos] - open[pos]) / (high[pos] - low[pos]));
                      }
                      else
                      {
                         out[pos] = out[pos + 1] - (tick_volume[pos] * (open[pos] - close[pos]) / (high[pos] - low[pos]));
                      }
                   }
                }
                break;
  • Alternative Version 2

    Code: Select all

                {
                   if (high[pos] == low[pos] || open[pos] == close[pos] || close[pos] == close[pos + 1])
                   {
                      out[pos] = out[pos + 1];
                   }
                   else
                   {
                      out[pos] = out[pos + 1] + (tick_volume[pos] * (high[pos] - open[pos]) / (high[pos] - low[pos])) -
                         (tick_volume[pos] * (open[pos] - low[pos]) / (high[pos] - low[pos]));
                   }
                }
                break;
PS: For the accompanying traditional version (with Divergences), please see here: OBV Divergences Version.
All files in topic