Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 1202

 
Igor Makanu:

eso es lo que estoy escribiendo, es más fácil de comprobar, en 10 minutos.... comprobado, FileWriteArray() no escribe el tamaño de la matriz en la cabecera ni en el primer byte, por lo que simplemente escribimos estos valores nosotros mismos

Igor, no he dicho que sea imposible en absoluto. Lee atentamente mis palabras.

Alexey Viktorov:

...

Cómo se puede leer una estructura y tres arrays de un archivo, que no se sabe cómo fue escrito.

...

Además, en ese ejemplo hay un archivo abierto, una estructura leída, tres arrays leídos y ningún archivo cerrado. En este punto hay que preguntarse si el archivo se cierra después de ser escrito.

En tu ejemplo está leyendo arrays y elementos de estructura, no FileReadStruct().

Gracias por el ejemplo. Lo recordaré y lo utilizaré si es necesario.

 
Alexey Viktorov:

Igor, no he dicho que sea imposible en absoluto. Bueno, lee mis palabras con un poco más de atención.

Además, ese ejemplo tiene apertura de archivos, lectura de estructuras, lectura de tres arrays y no tiene cierre de archivos. En este punto uno empieza a preguntarse si el archivo se cierra después de ser escrito.

Su ejemplo muestra la lectura de arrays y elementos de estructura, no FileReadStruct().

Gracias por el ejemplo. Lo recordaré y lo utilizaré si es necesario.

No sé de qué otra manera explicar ))))

crees en algún tipo de magia - que los programas de terceros pueden averiguar el formato de los datos escritos en un archivo binario - ¡nadie puede leer datos de un archivo binario sin conocer la estructura de datos!

Un archivo binario es una gran matriz de bytes a la que se accede secuencialmente: ¿qué has escrito? ¿Qué has leído? - sólo que, si no lo haces, estarás leyendo un montón de datos binarios.

)))

SZZ: es comprensible que quiera escribir (leer) un array con un comando ArrayWrite y una estructura de la misma manera, sí es posible, pero si usamos un tamaño de datos fijo y escribimos cada estructura/array en un archivo separado

 

Igor Makanu:

Bueno, usted cree en algún tipo de magia - que los programas de terceros pueden averiguar el formato de los datos escritos en un archivo binario - ¡nadie puede leer los datos de un archivo binario sin conocer la estructura de datos!

Me malinterpretas. Dije exactamente lo mismo sólo que con otras palabras. No era una pregunta de cómo hacerlo, era... ni siquiera un signo de interrogación...

 

¿Me pueden decir cómo crear un símbolo personalizado en mt5 si quiero poner un gráfico de acciones con fondos? Agente de apertura, en su caso)

He intentado hacer lo siguiente:

1. Descargo un historial de cotizaciones en csv desde finam

2. Convertir csv a json

{
    "root": {
        "row": [
            {
                "TICKER": "FXRU",
                "PER": "1",
                "DATE": "20190502",
                "TIME": "100100",
                "OPEN": "748.7000000",
                "HIGH": "749.7000000",
                "LOW": "747.7000000",
                "CLOSE": "749.7000000",
                "VOL": "115"
            },
               ]
           }
}

3. No funciona.

 
Igor Makanu:

eso es lo que escribo, es más fácil de comprobar, en 10 minutos.... comprobado, FileWriteArray() no escribe el tamaño del array en la cabecera ni en el primer byte, por lo que tenemos que escribir estos valores nosotros mismos

2020.03.25 10:18:36.058 tst (EURUSD,H1) 1. d_arr

2020.03.25 10:18:36.058 tst (EURUSD,H1) 3.14159 3.14159 3.14159 3.14159

2020.03.25 10:18:36.058 tst (EURUSD,H1) 2. i_arr

2020.03.25 10:18:36.058 tst (EURUSD,H1) 1234567890 1234567890

2020.03.25 10:18:36.058 tst (EURUSD,H1) 2. c_arr

2020.03.25 10:18:36.058 tst (EURUSD,H1) 127 127 127

2020.03.25 10:18:36.058 tst (EURUSD,H1) mstruct.a = 666 , mstruct.b = 123.123000

Es decir, si las dimensiones de las matrices son dinámicas, significa que escribimos las dimensiones de las matrices cuando escribimos y leemos las dimensiones de las matrices del archivo y establecemos las dimensiones de las matrices de la estructura cuando leemos

en mi ejemplo 2 estructuras - una fue inicializada y escrita, la segunda fue leída, inicializada desde los datos del archivo

Gracias, muy impresionante.

Y si escribes 2 estructuras en el archivo, obviamente puedes leerlas de la misma manera.


PS Una estructura simple (en cualquier cantidad) es escrita y leída por la función regular sin problemas.
 
Por favor, ¿cómo se establece el tamaño de la segunda dimensión de un array dinámico bidimensional sobre la marcha?
 
Сергей Таболин:
Por favor, sea amable, ¿cómo se establece el tamaño de la segunda dimensión de un array dinámico bidimensional sobre la marcha?

o envolver un array unidimensional en un array de estructuras

struct Sarr
{
   double            y[];
};
struct Sarr2x2
{
   Sarr              x[];
};

void OnStart()
{
   Sarr2x2 arr;
   ArrayResize(arr.x,10);
   for(int i=0; i<ArraySize(arr.x); i++)
   {
      ArrayResize(arr.x[i].y,10);
   }
   arr.x[0].y[0] = 5.0;
}
//+------------------------------------------------------------------+

o utilizar una clase que haga el trabajo - no quiero buscarlo, ya te he dado los enlaces cien veces

https://www.mql5.com/ru/forum/6729/page3#comment_674794


sí, hay una clase de matriz en alglib

#include <Math\Alglib\matrix.mqh>

void OnStart()
  {
      CMatrixDouble d_arr;
      d_arr.Resize(10,10);
 

¿Qué significa la escala de tiempo en la historia del comercio?

Escala X. ¿Qué significan los valores de la escala?

 

cómo utilizar MQL para crear una imagen .bmp y guardarla en un archivo sin vincularse a un gráfico, es decir, sin crear primero un objeto Canvas o CGraphic en un gráfico

Busqué superficialmente en los artículos no vi tal información, necesito una instrucción sobre cómo empezar, voy a escribir el código yo mismo

 
Igor Makanu:

cómo utilizar MQL para crear una imagen .bmp y guardarla en un archivo sin vincularse a un gráfico, es decir, sin crear primero un objeto Canvas o CGraphic en un gráfico

Busqué superficialmente en los artículos no vi tal información, necesito una instrucción de cómo empezar, voy a escribir el código yo mismo

En recursos
Razón de la queja: