Estoy completamente perdido - página 2

 
zortharg: No estaba pidiendo a nadie que produjera algo de valor comercial para mí. No estoy pidiendo que alguien "codifiquemi método PARA mí", WHRoeder. Sólo necesito un punto de partida.
  1. Me pareció que sí.
    zortharg: Yo preguntaba si alguien iba a escribir uno.
  2. Te di tres enlaces para empezar: aprender a codificar muchos puntos de partida.
 
zortharg:

No estaba pidiendo a nadie que produjera algo de valor comercial para mí. No estoy pidiendo que alguien "codifique mi método PARA mí", WHRoeder. Sólo necesito un punto de partida. Puedo ser capaz de averiguar algo desde el enlace que pusiste en la "búsqueda", aunque realmente me gustaría un "esto es lo que se necesita". No sé cómo debería ser el programa en realidad. No sé lo que es estrictamente necesario para estar en él. Si trato de hacerlo yo mismo de la nada sin ningún punto de referencia, sólo voy a obtener errores de compilación porque ni siquiera voy a saber lo que le falta.


Mira aquí
 

Estoy a punto de encajar las piezas. Pero no estoy del todo ahí. Hay cosas que no tienen sentido. Por ejemplo:

https://docs.mql4.com/array/ArrayCopySeries

Esto no tiene sentido. ¿Qué pasa si el array que he declarado no tiene el mismo tamaño? Básicamente está garantizado que NO lo es. No quiero salirme del final del array para declarar que el array es más grande de lo que PIENSO que será, ¿pero qué pasa si alguna vez es más grande? ¿Y qué pasa si es menor? Si el "array" tiene más entradas que los datos de la moneda, ¿se rellenan las restantes con 0? ¿Y qué ocurre con los arrays doblemente indexados? Por ejemplo, supongamos que declaro que el array es de tamaño [16384][6] y los datos que quiero copiar en [0:16383,0] son de longitud 3000. ¿Cómo lo haría? ¿Necesitaría otra variable de array para poner los datos de la moneda, que sería una variable indexada individualmente (de sólo tamaño 16384, no de tamaño 16384 x 6) y entonces sus primeras 3000 entradas se escribirían con los datos de la moneda y las entradas 3000 a 16383 se escribirían con 0, y luego me toca mover el contenido de la variable temporal al array de tamaño [16384][6]? Ese es el rompecabezas en el que me encuentro ahora mismo.

 
zortharg:

Estoy a punto de encajar las piezas. Pero no estoy del todo ahí. Hay cosas que no tienen sentido. Por ejemplo:

https://docs.mql4.com/array/ArrayCopySeries

Esto no tiene sentido. ¿Qué pasa si el array que he declarado no tiene el mismo tamaño? Está básicamente garantizado que NO lo es. No quiero salirme del final del array para declarar que el array es más grande de lo que PIENSO que será, ¿pero qué pasa si alguna vez es más grande? ¿Y qué pasa si es menor? Si el "array" tiene más entradas que los datos de la moneda, ¿se rellenan las restantes con 0? ¿Y qué ocurre con los arrays doblemente indexados? Por ejemplo, supongamos que declaro que el array es de tamaño [16384][6] y los datos que quiero copiar en [0:16383,0] son de longitud 3000. ¿Cómo lo haría? ¿Necesitaría otra variable de array para poner los datos de la moneda, que sería una variable indexada individualmente (de sólo tamaño 16384, no de tamaño 16384 x 6) y entonces sus primeras 3000 entradas se escribirían con los datos de la moneda y las entradas 3000 a 16383 se escribirían con 0, y luego me toca mover el contenido de la variable temporal al array de tamaño [16384][6]? Ese es el rompecabezas en el que me encuentro ahora mismo.

Creo que deberías volver a leer los Docs. Dice y cito "No hay asignación de memoria real para el array de datos y no se copia nada".

Solo establece una Referencia por lo que no estableces el tamaño en el Array de destino. Sólo lo declaras. Mira de nuevo el ejemplo en la documentación. No hay tamaño en la declaración.

datetime daytimes[];
ArrayCopySeries(daytimes,MODE_TIME,Symbol(),PERIOD_D1);
 

Entonces, ¿tengo que descargar los precios históricos de uno en uno con iclose? https://docs.mql4.com/series/iClose El problema con eso, tal como lo veo, es que los datos pueden actualizarse mientras estoy en medio de la descarga. Estaría muy bien descargarlo todo en bloque. Supongo que puedo descargar el tiempo con iTime y LUEGO usar iclose y LUEGO usar iTime de nuevo en el mismo índice y si ha cambiado, entonces ha comenzado un nuevo intervalo de tiempo de barra y tengo que retroceder un número de índice. ¿Estoy razonando correctamente o hay algo que no entiendo?

 

Creo que no estamos hablando el mismo idioma. Primero preguntas por la función ArrayCopySeries, ahora quieres descargar todos los datos a través de iClose.

No hay necesidad de descargar todos los datos - están siempre disponibles para usted en cualquier momento que los necesite.

¿Qué es lo que está tratando de hacer?

¿Por qué necesitas copiar todos los datos de un Array en otro Array, si ya puedes acceder a ellos totalmente desde el primero?

¿Estás intentando pasar la información a una DLL externa para que la procese? Si es así, debes utilizar la función "CopyRates" - https://www.mql5.com/en/docs/series/copyrates

Para cualquier otro caso, no es necesario descargar todos los datos. Ya es accesible a través de los métodos normales.

 

He decidido releer tu primer post en detalle para ver qué es lo que intentas conseguir y me he dado cuenta de que lo estás haciendo TODO MAL.

Usted no tiene que descargar todos los datos en la memoria RAM como usted explicó. El entorno de MetaTrader ya lo ha hecho por ti. Lo único que tienes que hacer es acceder a ellos de forma normal.

Le sugiero que eche un vistazo a los muchos ejemplos de EA aquí en el sitio en la base de código o el libro de introducción a la programación MQL4, aquí también en este sitio.

También leer los diversos artículos que explican cómo se podría abordar la escritura de un EA:

De esta manera usted puede aprender cómo se hace en lugar de tratar de "reinventar la rueda".

 

Nadie me ha dado una PISTA de cómo hacer nada, me dicen que lo descubra por mí mismo o que pague a alguien para que lo haga, lee los primeros mensajes de este hilo y lo verás. ¡La audacia de la gente de este foro! Se niegan a decirme nada y luego se burlan de mí por no conocer ya los "métodos normales". Oh, ¡díganlo! Pero de todas formas eso no suena ideal. Lo que estoy tratando de hacer es descargar los datos del mercado de divisas en la memoria RAM de mi ordenador, realizar cálculos sobre esto, y luego hacer que mi ordenador cargue órdenes de compra y venta para operar en el mercado de divisas. Eso es lo que quiero hacer. Si no es mi ordenador el que realiza los cálculos, entonces ¿qué es lo que realiza los cálculos? ¿Un ordenador remoto? No puedo estar enviando y recibiendo datos a través de Internet cada vez que quiero acceder a un precio histórico, si quiero acceder a ese precio 1000 veces diferentes en el proceso de los cálculos, el tiempo que tomaría para acceder a eso ralentizaría los cálculos por un factor de miles o millones. Esta es una de las razones por las que existe la RAM en la arquitectura de los ordenadores, las lecturas y escrituras en el disco duro tardan mucho más. Es el mismo principio aquí, necesito almacenar los datos en una matriz en mi ordenador porque hacer una petición a través de Internet cada vez que quiero acceder a una pieza de información en particular es malo.

¿Qué idea tienes de lo que se supone que hace un robot de trading?

 
zortharg:

Nadie me ha dado una PISTA de cómo hacer nada, me dicen que lo descubra por mí mismo o que pague a alguien para que lo haga, lee los primeros posts de este hilo y lo verás. ¡La audacia de la gente de este foro! Se niegan a decirme nada y luego se burlan de mí por no conocer ya los "métodos normales". Oh, ¡díganlo! Pero de todas formas eso no suena ideal. Lo que estoy tratando de hacer es descargar los datos del mercado de divisas en la memoria RAM de mi ordenador, realizar cálculos sobre esto, y luego hacer que mi ordenador cargue órdenes de compra y venta para operar en el mercado de divisas. Eso es lo que quiero hacer. Si no es mi ordenador el que realiza los cálculos, entonces ¿qué es lo que realiza los cálculos? ¿Un ordenador remoto? No puedo estar enviando y recibiendo datos a través de Internet cada vez que quiero acceder a un precio histórico, si quiero acceder a ese precio 1000 veces diferentes en el proceso de los cálculos, el tiempo que tomaría para acceder a eso ralentizaría los cálculos por un factor de miles o millones. Esta es una de las razones por las que existe la RAM en la arquitectura de los ordenadores, las lecturas y escrituras en el disco duro tardan mucho más. Es el mismo principio aquí, necesito almacenar los datos en una matriz en mi ordenador porque hacer una petición a través de Internet cada vez que quiero acceder a una pieza particular de información es malo.

¿Qué idea tienes de lo que se supone que hace un robot de trading?

¡Así no es como funciona el entorno de MetaTrader y MQL! ¡Como ya he dicho! NO descargues los datos en la RAM porque ya se ha hecho por ti. Deja de intentar enseñarnos cómo codificar en MQL4. Eres tú el que tiene que dejar de lado tus ideas preconcebidas de cómo escribir el código y aprender primero qué herramientas y entorno tienes a mano.

Si no quieres que la gente se escandalice contigo, entonces no seas perezoso y LEE LA DOCUMENTACIÓN (de principio a fin). Este sitio tiene muchos enlaces de documentación y ejemplos de código.

Cuando empecé no pedí ayuda sin antes familiarizarme con el entorno. Me tomé el tiempo para leer el libro, la documentación y los muchos, muchos, muchos ejemplos en este sitio y aprendí cómo hacerlo.

No eres un bebé y no necesitas que te den de comer. Aprende leyendo la documentación completamente GRATIS aquí y en muchos otros sitios. Usted puede incluso salir y comprar libros sobre cómo escribir un EA en MQL4 o MQL5 (por ejemplo, Expert Advisor Programming por Andrew R. Young).

Sin embargo, si usted está buscando un maestro, que es diferente. Normalmente se paga por los servicios de tener un "entrenador personal". ¿Está dispuesto a pagar? Estoy seguro de que muchos aceptarían una solicitud de este tipo en la sección de empleos(https://www.mql5.com/en/job).

Además, la primera persona que comentó aquí por ti fue "ubzen" y lo primero que hizo fue recomendarte que empezaras por leer el "Libro de introducción" y la "Documentación de referencia" ya que afirmabas que ya eras un buen programador en otros lenguajes. UN CONSEJO MUY ACERTADO.

Una cosa más - Si hubieras utilizado tus pequeñas células grises y hubieras hecho una búsqueda aquí en la sección de Artículos, habrías encontrado este artículo muy antiguo pero todavía válido:

Así que, deja de quejarte y de ser perezoso y haz tu parte de "Investigación" de I+D. Ya lo sabes, ¿no?

 
zortharg:

Nadie me ha dado una PISTA de cómo hacer nada, me dicen que lo descubra por mí mismo o que pague a alguien para que lo haga, lee los primeros mensajes de este hilo y lo verás. ¡La audacia de la gente de este foro! Se niegan a decirme nada y luego se burlan de mí por no conocer ya los "métodos normales". Oh, ¡díganlo! Pero de todas formas eso no suena ideal.

¿Por qué deberían ayudarte? ¿Qué te hace pensar que tienen alguna obligación contigo? ¿a quién has ayudado en este foro?
Razón de la queja: