Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 487

 
igrok333:

¿Cómo puedo leer la línea 8 de un archivo?

La pregunta se refiere a las operaciones de archivo

https://docs.mql4.com/ru/files


Todo en mql se hace por fuerza bruta, como alguien me dijo una vez?


¿No puedes hacerlo de otra manera?

Todos los tipos de datos tienen un determinado tamaño de memoria ocupada en bytes. En consecuencia, al escribir código, puede utilizarlo y desplazar el puntero del archivo al número de bytes que ocupan los datos de una cadena.

Si una línea contiene 4 valores de tipo doble, se necesitan 4*8 = 32 bytes. Respectivamente, para leer la novena línea del archivo necesitamos desplazar el puntero del archivo a 256 bytes.

bool  FileSeek(
   int                  file_handle,     // handle файла
   long                 offset,          // в байтах 
   ENUM_FILE_POSITION   origin           // позиция для отсчета
   );
bool  FileSeek(file_handle, 265, SEEK_SET);

Si se desplaza desde el final del archivo, el valor debe ser negativo.

Pero, no todo es tan suave. Hace algún tiempo, traté este tema y descubrí que los archivos .txt y .csv no funcionan correctamente con esto, pero los archivos .bin no dan errores. Tal vez este problema ya se haya solucionado y tengas suerte.

 
Alexey Viktorov:

Si hay 4 valores de tipo double

¿no son todos los valores de un archivo csv una cadena?


Tengo una palabra para cada línea del archivo.
Así que tengo valores de cadena con un tamaño de 12 bytes.
Así que, para llegar a la línea 8, necesito desplazar el carro 84 bytes.

bool  FileSeek(file_handle, 84, SEEK_SET);

Gracias por la información.

 
¿Cómo puedo recorrer todas las posiciones abiertas en mql 5?
 
Roman Sharanov:
¿Cómo en mql 5 hacer un bucle en todas las posiciones abiertas?
este es el tema de mql4
 
igrok333:
este es el tema de mql4

No, este tema es tanto mql4 como mql5

 
Roni Iron:

¡Buenas tardes!

Pregunta: ¿cómo acelerar el probador en el terminal?

Lo tengo usando sólo 1 hilo de CPU de 4, y sólo 150mb de RAM. (es decir, no utiliza toda la potencia de mi PC).

¿Cuáles son las opciones?

Si ya se ha hablado de esto, deje los enlaces, por favor.

Si MT4 entonces sólo la frecuencia de la CPU juega un papel aquí. ¿Usa un hilo? Puede lanzar simultáneamente 4 terminales MT4 con diferentes tareas de prueba u optimización. Obtendrá la misma carga de CPU que en un terminal.

 
Roman Sharanov:
¿Cómo puedo recorrer todas las posiciones abiertas en mql5?

mql5 distingue entre posiciones y órdenes. Una posición es el resultado de una operación. Y una operación es el resultado de la activación de una orden.

En primer lugar, se envía una solicitud de operación al servidor, y aparece una orden pendiente (si la solicitud era para establecer una) o una orden de mercado (si la solicitud era para abrir una posición).

Si la orden de mercado se activa (se produce una operación), aparece una posición (o se modifica una posición existente) como resultado de esta operación.

En una cuenta de cobertura, puede haber muchas posiciones separadas (incluso multidireccionales), en una cuenta de compensación sólo puede haber una posición.

Por lo tanto, para recorrer todas las posiciones, es necesario organizar el bucle por su número - respectivamente, utilizar PositionsTotal() en lugar de la habitual para mql4 OrdersTotal().

Si queremos hacer un bucle con todos los pedidos en mql5, entonces (en mql5) utilizamos el habitual for mql4 OrdersTotal().

 
igrok333:

¿pero no son todos los valores del archivo csv una cadena?


Tengo una palabra para cada línea del archivo.
Así que tengo valores de cadena con un tamaño de 12 bytes.
Así que, para llegar a la línea 8, necesito desplazar el carro 84 bytes.


Gracias por la información.

El archivo de texto debe leerse sólo línea por línea. No hay otra forma de calcular el número de línea. Así que - sí, sólo por la lectura consecutiva en bucle utilizando FileReadString.

 

Creo los niveles de Fibonacci en el gráfico usando ObjectCreate(name,OBJ_FIBO, ...) y luego ObjectSetFiboDescription(name,0,"...") y establezco la descripción de los niveles pero los nombres deben alejarse del borde derecho. He añadido espacio en blanco, pero no sólo aleja el texto sino que también tapa las líneas. Además, si añades más espacios, el texto deja de retroceder.
Pregunta: ¿Puedo añadir un símbolo "invisible" al texto, para que no cubra la línea que hay debajo?


 
Maxim Khrolenko:

Creo los niveles de Fibonacci en el gráfico usando ObjectCreate(name,OBJ_FIBO, ...) y luego ObjectSetFiboDescription(name,0,"...") y establezco la descripción de los niveles pero los nombres deben alejarse del borde derecho. He añadido espacio en blanco, pero no sólo aleja el texto sino que también tapa las líneas. Además, si añades más espacios, el texto deja de retroceder.
Pregunta: ¿Puedo añadir un símbolo "invisible" al texto, para que no cubra la línea que hay debajo?

pruebe con puntos y un carácter con código 0

Razón de la queja: