Volumen Real

Foro dedicado a todo lo relacionado con la versión 4 de la plataforma de Metaquotes.
Avatar de Usuario
Foréxitos
Mensajes: 682
Registrado: 12 Mar 2017 19:13

Volumen Real

Mensaje por Foréxitos »

Hola a toda la comunidad foril especialmente a los de código mql4. En estos días estuve realizando un indicador bastante novedoso e intuitivo y estéticamente lindo, pero a la hora de verificar su funcionamiento para no pasar por alto ningún error de valor, al programarlo de cualquier manera diferente y que cumpla la misma función, me encontré con que no sé de que manera puedo ver el volumen real (const long& volumen[] de la función OnCalculate) por ejemplo en un simple comentario (Comment). Puedo ver en un comentario cualquiera de las otras formas que existen de calcular el volumen, pero por lo menos quisiera saber por qué es que no se puede ver el volumen real en un simple comentario... no me gustaría descartar algo tan simple como esto sin antes saber el por qué. Saludos.

pd: adjunto un indicador con la idea de lo que estaba tratando de resolver y pego el código acá para verlo.

//+------------------------------------------------------------------+
//| Tick.mq4 |
//| Copyright 2020, Foréxitos |
//| https://www.forexitos.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2020, Foréxitos"
#property description "Echo por casiTRADER"
#property link "https://www.forexitos.com/"
#property strict

#property indicator_chart_window

long t_v, iV, V;
int i;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
return(0);
}
int deinit()
{
Comment("");
return (0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
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[], // Volumen real <---!
const int& spread[])
{
for( i=0; i<rates_total; i++)
{
t_v = tick_volume[0];
}
iV = iVolume(NULL,0,0);
V = Volume[0];
Comment(
"\n","i = ",i,
"\n","tick_volumen = ",t_v,
"\n","iVolumen = ",iV,
"\n","Volumen = ",V,
"\n","volumen = ???" // Volumen real <---!
);
return(rates_total);
}
Adjuntos
Volumes.mq4
(3.83 KiB) Descargado 120 veces
ImagenImagenImagenImagenImagen
BePo
Mensajes: 5
Registrado: 19 Jun 2020 16:13

Re: Volumen Real

Mensaje por BePo »

Este blucle no hace nada:

for( i=0; i<rates_total; i++)
{
t_v = tick_volume[0];
}

Puedes dejar "t_v = tick_volume[0];" y obtienes el mismo resultado. Si usas un bucle lo normal es utilizar la variable i con la que iteras. Si quieres sumar todos los valores tendrías que poner "t_v += tick_volume;" (el + para ir añadiendo y la i en lugar del 0 para acceder a todos los valores)

Si lo que quieres es ver la suma total de los valores de volume[], quizá esto te sirva:

long real_volume = 0;
for( i=0; i<rates_total; i++)
{
real_volume += tick_volume[ i ];
}

Se podría optimizar sacando la variable real_volume fuera del OnCalculate (como t_v, iV, V) y que el bucle empiece en la barra actual en lugar de hacerlo siempre desde cero, así no hay que sumar toda la serie en cada llamada a OnCalculate.
Avatar de Usuario
Foréxitos
Mensajes: 682
Registrado: 12 Mar 2017 19:13

Re: Volumen Real

Mensaje por Foréxitos »

Hola BePo, gracias por responder. Es cierto, ese siclo no hace nada, pero si no pones un siclo for, haga o no haga algo, "t_v=tick_volume[0];"no comenta nada...(por lo menos en #property strict) hace la prueba vos mismo.... y si no es así subí el archivo de cómo es. Después el ultimo ejemplo que das... no lo cheque porque no estoy en la oficina (mas tarde la chequeo) pero a simple vista no es lo que buscaba por dos cosas: 1- no quiero ver ninguna suma; 2- no usas la constante "volume[]".
Para que se entienda mejor mi pregunta: La constante "tick_volume[]" se puede ver en un comentario, ¿Cómo puedo ver la constante "volume[]" en un comentario? que vendría a ser ver el volumen real. Saludos.
ImagenImagenImagenImagenImagen
BePo
Mensajes: 5
Registrado: 19 Jun 2020 16:13

Re: Volumen Real

Mensaje por BePo »

Foréxitos escribió: 20 Jun 2020 19:29 Hola BePo, gracias por responder. Es cierto, ese siclo no hace nada, pero si no pones un siclo for, haga o no haga algo, "t_v=tick_volume[0];"no comenta nada...(por lo menos en #property strict) hace la prueba vos mismo.... y si no es así subí el archivo de cómo es. Después el ultimo ejemplo que das... no lo cheque porque no estoy en la oficina (mas tarde la chequeo) pero a simple vista no es lo que buscaba por dos cosas: 1- no quiero ver ninguna suma; 2- no usas la constante "volume[]".
Para que se entienda mejor mi pregunta: La constante "tick_volume[]" se puede ver en un comentario, ¿Cómo puedo ver la constante "volume[]" en un comentario? que vendría a ser ver el volumen real. Saludos.
He puesto tick_volume en lugar de volume. Sería "real_volume += volume[ i ];". Si solo quieres el último valor, quita el bucle y cambia la suma por una asignación "real_volume = volume[ 0 ];".

No puedo hacer pruebas ahora pero no veo qué relación tiene que hagas o no un for con que el Comment funcione. Comment va a mostrar los valores de las variables que indiques independientemente de cómo se hayan obtenido esos valores (en un for, asignación directa...).
Avatar de Usuario
Foréxitos
Mensajes: 682
Registrado: 12 Mar 2017 19:13

Re: Volumen Real

Mensaje por Foréxitos »

devuelta BePo, gracias por contestar. Tenes toda la razón cuando decís que no hace falta un siclo for para ver en un comentario la constante "tick_volume[]"... no sé de donde se me ocurrió semejante burrada....jajajasj a veces me mareo bastante (soy autodidacta) y en esto de código mql4 por un simple error no funciona TODO... Me fui corriendo a la oficina con mi hijo en este día del padre a chequear lo que me comentas... (Feliz día a todos los papá taders!)... pero no me arroja ningún comentario de la constante "volume[]", ni con [0] ni con i también ni con for ni sin for, es más, me borra los demás comentarios y no aparece nada... quiero aclarar que estoy haciendo las pruebas en el Strategy Tester de MT4 y no en el mercado abierto, no se si tendrá algo que ver. Estoy seguro de que esto es una total simpleza, lamentablemente para mí no lo es :cry: Saludos.

PD: adjunto tu ejemplo BePo y el código para que lo veas, es el mismo archivo anterior con la nueva modificación.

//+------------------------------------------------------------------+
//| Tick.mq4 |
//| Copyright 2020, Foréxitos |
//| https://www.forexitos.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2020, Foréxitos"
#property description "Echo por casiTRADER"
#property link "https://www.forexitos.com/"
#property strict

#property indicator_chart_window

long t_v, iV, V, v=0;
int i;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
return(0);
}
int deinit()
{
Comment("");
return (0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
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[], // Volumen real <---!
const int& spread[])
{
t_v=tick_volume[0];
iV = iVolume(NULL,0,0);
V = Volume[0];

for(i=0;i<rates_total;i++)
{
v+=volume[0];
}
Comment(
"\n","i = ",i,
"\n","tick_volumen = ",t_v,
"\n","iVolumen = ",iV,
"\n","Volumen = ",V,
"\n","volumen = ",v // Volumen real <---!
);
return(rates_total);
}
Adjuntos
Volumes.mq4
(3.88 KiB) Descargado 104 veces
ImagenImagenImagenImagenImagen

BePo
Mensajes: 5
Registrado: 19 Jun 2020 16:13

Re: Volumen Real

Mensaje por BePo »

Como te he comentado, no puedo hacer pruebas ahora. Siendo algo tan simple supongo que alguien podrá echarte un cable por aquí.

Si estás empezando, échale un vistazo a este video sobre depuración o a cualquier otro relacionado con debug con MQL4. Te vendrá muy bien y te servirá para este tipo de problemas.
Avatar de Usuario
Foréxitos
Mensajes: 682
Registrado: 12 Mar 2017 19:13

Re: Volumen Real

Mensaje por Foréxitos »

Me los conozco de memoria los tutoriales de mi amigo Sergio jajaja... justamente hoy le pregunté sobre esto así que acá estoy esperando su respuesta ansiosamente y obviamente la de alguien de este foro que de seguro se topó con lo mismo y lo pudo solucionar. Gracias por tu ayuda igualmente BePo... seguiré intentándolo no debe ser muy difícil, cuando lo resuelva contaré como se hace. Saludos
ImagenImagenImagenImagenImagen
Avatar de Usuario
Karachiento
Mensajes: 68
Registrado: 17 Ago 2018 23:03

Re: Volumen Real

Mensaje por Karachiento »

¿La consulta que hace el indicador de los volúmenes reales es sobre un par de divisas? Si es así, yo tuve la misma inquietud hace un par de meses (para mql5, pero para el caso es lo mismo) y el problema no estaba en mi código, sino que la mayoría de los brokers no proporcionan la información del volumen real para los pares de divisas.

Aquí la consulta:
https://www.mql5.com/en/forum/338238
en la intervención numero 10 la razón del problema

Saludos!
Avatar de Usuario
Foréxitos
Mensajes: 682
Registrado: 12 Mar 2017 19:13

Re: Volumen Real

Mensaje por Foréxitos »

Gracias por responder Karachiento, esto lo explica todo... o sea no queda otra que preguntarle a tu propio broker en que activos de los que ofrecen nos proporcionan el volumen real. Hoy le mando un mensaje a Darwinex y expongo su respuesta en este hilo. Por lo que parece solo funciona en futuros. Saludos.
ImagenImagenImagenImagenImagen
Avatar de Usuario
X-Trader
Administrador
Mensajes: 12781
Registrado: 06 Sep 2004 10:18
Contactar:

Re: Volumen Real

Mensaje por X-Trader »

Karachiento escribió: 22 Jun 2020 09:35 ¿La consulta que hace el indicador de los volúmenes reales es sobre un par de divisas? Si es así, yo tuve la misma inquietud hace un par de meses (para mql5, pero para el caso es lo mismo) y el problema no estaba en mi código, sino que la mayoría de los brokers no proporcionan la información del volumen real para los pares de divisas.

Aquí la consulta:
https://www.mql5.com/en/forum/338238
en la intervención numero 10 la razón del problema

Saludos!
Es que lo que hacen la mayoría de los brokers que usan MT4 es proporcionar el número de refrescos de cotización que reciben de sus proveedores, no los contratos realmente negociados. Dicho de otro modo, en momentos con poca volatilidad, habrá pocos refrescos y el supuesto "volumen" que aparece será bajo, mientras que cuando aumenta la volatilidad, habrá muchos refresos en las cotizciones y el volumen reflejado en MT4 aumentará.

Saludos,
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
Avatar de Usuario
Foréxitos
Mensajes: 682
Registrado: 12 Mar 2017 19:13

Re: Volumen Real

Mensaje por Foréxitos »

X-Trader escribió: 22 Jun 2020 15:56 Es que lo que hacen la mayoría de los brokers que usan MT4 es proporcionar el número de refrescos de cotización que reciben de sus proveedores, no los contratos realmente negociados. Dicho de otro modo, en momentos con poca volatilidad, habrá pocos refrescos y el supuesto "volumen" que aparece será bajo, mientras que cuando aumenta la volatilidad, habrá muchos refresos en las cotizciones y el volumen reflejado en MT4 aumentará.
Sí, todos sabemos que al ser un mercado descentralizado, el tick_volume[ ] y el volume[ ] siempre va a ser diferente en un broker u otro... diferentes pero no tan distintos, pero no confundamos los términos: tick_volume[ ]: es la matriz con los valores de los volúmenes de ticks, y volume[ ]: es la matriz con los valores de los volúmenes comerciales.... por eso no hay que generalizar cuando se habla del volumen... no digo que lo allas hecho X, pero vale aclarar. Saludos.
ImagenImagenImagenImagenImagen
Avatar de Usuario
Foréxitos
Mensajes: 682
Registrado: 12 Mar 2017 19:13

Re: Volumen Real

Mensaje por Foréxitos »

Ya ni me gasto con MT4. En Darwinex me contestaron ésto. Les volví a preguntar por MT5... en una de esas nos dan aunque sea el volumen real de algún futuro...? no lo sé.

Darwinex Info
Buenos días, Foréxitos:
Muchas gracias por tu mensaje! No soy un experto en la materia pero, hasta donde yo sé, MT4 no permite obtener los datos del volumen real de un determinado activo.
Existen indicadores online pero no los datos que ofrecen no son fiables / exactos.
Siento no haber podido ser de más ayuda en esta ocasión, aquí nos tienes para lo que necesites!
Un abrazo,
Ignacio
ImagenImagenImagenImagenImagen
Broricos
Mensajes: 61
Registrado: 20 Abr 2013 17:35

Re: Volumen Real

Mensaje por Broricos »

Como ya habéis intuido la variable Volume[] en MT4 no es alimentada porque simplemente en MT4 esta el momento ningún proveedor ofrece volumen real por la simple razón de cada uno de ellos maneja sus activos y CFds como un mundo independiente. (un misterio de donde viene la contra-parte de cada transacción)

A diferencia MT5 si ofrece volumen real para mercados centralizados como son futuros . La variable Volumen se entiende como la sumatoria de los "deals" realizados en el ask (TICK_FLAG_ASK) y los "deals" realizados en el bid (TICK_FLAG_BID). Volumen real supone toda una estructura de información que solo los mercados centralizados pueden ofrecer.

Para referencia . https://www.mql5.com/en/docs/constants/ ... ransaction

sldos,
Avatar de Usuario
Foréxitos
Mensajes: 682
Registrado: 12 Mar 2017 19:13

Re: Volumen Real

Mensaje por Foréxitos »

Hola Broricos, muy buena tu respuesta. Entiendo que los futuros son un mercado centralizado.... pero por ejemplo Darwinex también ofrece operar futuros en MT4 y aún así el volumen real no es ofrecido.... digo esto por que así y todo también intenté verlo en futuros en MT4 y nada... entonces yo creo que hay mas otra cosa entre MT4 vs. MT5 que entre ser centralizado o no. Otra cosa, ningún proveedor ofrece el volumen real en MT4 hoy (todavía no lo he chequeado), pero MT4 no designó la Matriz volume[ ] par nada.... estoy seguro que se ha podido utilizar sin inconvenientes en aquellos años... que haya sido realmente el volumen real o no, es otra cosa..pero estaría genial averiguar cuándo y por qué es que se dejo de ofrecer este dato. Saludos.
ImagenImagenImagenImagenImagen
OscarLA
Mensajes: 161
Registrado: 11 Nov 2015 23:58

Re: Volumen Real

Mensaje por OscarLA »

Foréxitos escribió: 24 Jun 2020 18:34 .... pero por ejemplo Darwinex también ofrece operar futuros en MT4 y aún así el volumen real no es ofrecido.... digo esto por que así y todo también intenté verlo en futuros en MT4 y nada...
Hola.

Darwinex no puede ofrecer futuros en MT4 porque simplemente esa plataforma no es operativa con ellos.

Para futuros solo te sirve el MT5.

Saludos.
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “Metatrader 4”