AvgVM
- Indicadores
- Versión: 1.0
- Activaciones: 5
Adaptado a partir de «Volumes», este indicador realiza un seguimiento de la actividad del mercado y, cuando el volumen supera un valor determinado, te indica que el mercado ha comenzado a experimentar fuertes fluctuaciones. Puedes combinarlo con otros indicadores para determinar la dirección de la tendencia,En ese momento, es fácil obtener beneficios con las órdenes, ya que la tasa de acierto es elevada; por el contrario, por debajo de la línea horizontal, el mercado se encuentra en una fase de inactividad y, aunque puedas obtener beneficios, tendrás que soportar un movimiento de vaivén constante, lo que hace que este tipo de órdenes requieran mucho tiempo y energía.
//+------------------------------------------------------------------+
//| Función de iteración (recorrido hacia adelante, coincidente con el indicador estándar MACD/Volumen de MT5) |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
int limit = rates_total - prev_calculated;
if(limit > 1) limit = rates_total - 1;
for(int i = limit; i >= 0; i--)
{
// El tick_volume de los símbolos USDJPYm y otros de tipo m suele devolver 0, por lo que hay que recurrir al volumen real volume[]
double currentVol = (double)tick_volume[i];
//double currentVol = (tv != 0.0) ? tv : (double)volume[i];
// Cálculo de la media móvil: se necesitan avm valores consecutivos de volumen (después de i también se necesita avm-1, por lo que i+avm <= rates_total)
if(i <= rates_total - avm)
{
double sum = 0.0;
for(int j = 0; j < avm; j++)
{
double v = (double)tick_volume[i + j];
if (v == 0.0) v = (double)volume[i + j];
sum += v;
AvgBuffer[i] = sum / avm;
}
}
else
{
// El historial no alcanza las avm raíces, se deja en blanco (es normal, las avm-1 raíces anteriores no tienen media móvil)
AvgBuffer[i] = 0,0;
VolAboveBuffer[i] = 0,0;
VolBelowBuffer[i] = 0,0;
continue;
}
