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

 
Los comentarios no relacionados con este tema han sido trasladados a "Preguntas de los principiantes de MQL4 MT4 MetaTrader 4".
 

Una pregunta a la que no he encontrado una respuesta clara:

Necesito utilizar 2 indicadores con cuatro puntos, ¿es necesario escribir a mano un indicador 4 veces en el init y el otro 4 veces?

O es posible utilizar uno de ellos cada vez, de lo contrario serán demasiadas líneas en el archivo.

No tengo ni idea de cómo usarlo.

 
Vitaly Muzichenko:

Una pregunta a la que no he encontrado una respuesta clara:

Necesito utilizar 2 indicadores con cuatro puntos, ¿es necesario escribir a mano un indicador 4 veces en el init y el otro 4 veces?

O es posible utilizar uno de ellos cada vez, de lo contrario serán demasiadas líneas en el archivo.

No tengo ni idea de cómo usarlo.

Imagina que tienes que abrir 8 puertas, cada una con una llave diferente. ¿Cuántas llaves necesitas para abrir todas las puertas?
 
Alexey Kozitsyn:
Imagina que tienes que abrir 8 puertas, cada una con una llave diferente. ¿Cuántas llaves necesitas para abrir todas las puertas?

Una ganzúa y nada más.

¿Puedo usarlo aquí, existe la posibilidad y no lo sé? Las obras se han detenido por la incertidumbre(

 
Vitaly Muzichenko:

Una ganzúa y nada más.

Puedo usarlo aquí, ¿quizás hay una posibilidad y no lo sé?

No, sólo hay llaves.
 
Alexey Kozitsyn:
No, sólo las llaves aquí.
Gracias, ahora voy a hacer con confianza y no pensar en lo que se puede hacer bien.
 
Hola 2017.05.05_02:58 GMT+3. ¿Quién puede decirme cómo obtener los valores de los últimos cuatro puntos ZigZag y sus índices o tiempos de inicio de barra en MQL5 en el código del programa EA? Llevo mucho tiempo luchando con ello pero hasta ahora no ha salido nada. Si aplico el operador de bucle while o for, no hay diferencia, el probador de estrategias genera un error en uno de sus registros: Array overrun en el archivo include. Aquí está el archivo de inclusión. Obtengo el array de valores de ZigZag usando la función CopyBuffer() y la manija de ZigZag. Parece que sólo contiene puntos ZigZag, por lo que no puedo recorrer el array secuencialmente en orden ascendente. La matriz se desordena. ¿Tal vez, el Sr. Karputov sabe cómo conseguir los últimos puntos de ZigZag sin salirse de la matriz?
Incluso intenté cambiar el código del indicador ZigZag, pero no conseguí reescribirlo para que los valores cero también se escribieran en los búferes del indicador. Intenté reescribirlo de tal manera que los valores cero no excedieran los límites del array durante el procesamiento del mismo. Hasta ahora, no he logrado entender completamente lo que está escrito en el código de ZigZag y cómo funciona. Me aburre, por eso escribo en el foro.
Creo que el comercio manual pertenece a la era pasada. No tengo suficiente tiempo para comerciar, ni siquiera quiero dormir lo suficiente y abrir tratos durante las comidas. Creo que soy capaz de escribir un Asesor Experto. No voy a rendirme ni a abandonar. Eso es todo por ahora. Espero su respuesta. 03:28 GMT+3. Publicado a las 03:56 GMT+3.
Archivos adjuntos:
TDiff.mqh  2 kb
 
Николай Никитюк:
Hola 2017.05.05_02:58 GMT+3. ¿Quién puede decirme cómo obtener los valores de los últimos cuatro puntos ZigZag y sus índices o tiempos de inicio de barra en MQL5 en el código del programa EA? Llevo mucho tiempo luchando con ello pero hasta ahora no ha salido nada. Si aplico el operador de bucle while o for, no hay diferencia, el probador de estrategias genera un error en uno de sus registros: Array overrun en el archivo include. Aquí está el archivo de inclusión. Obtengo el array de valores de ZigZag usando la función CopyBuffer() y la manija de ZigZag. Parece que sólo contiene puntos ZigZag, por lo que no puedo recorrer el array secuencialmente en orden ascendente. Obtenemos una sobrecarga de la matriz.

No. Todos los puntos se registran allí, incluidos los puntos vacíos.

Mykola Nikityuk:
Incluso traté de cambiar el código del indicador ZigZag, pero no fue exitoso reescribirlo de tal manera, que también los valores cero se escribieran en los buffers del indicador. No he conseguido reescribirlo de forma que no se sobrepasen los arrays al procesarlos por el bucle. Hasta ahora, no he logrado entender completamente lo que está escrito en el código de ZigZag y cómo funciona. Me aburre, por eso escribo en el foro.
Creo que el comercio manual pertenece a la era pasada. No tengo suficiente tiempo para comerciar, ni siquiera quiero dormir lo suficiente y abrir tratos durante las comidas. Creo que soy capaz de escribir un Asesor Experto. No voy a rendirme ni a abandonar. Eso es todo por ahora. Espero su respuesta. 03:28 GMT+3. Publicado a las 03:56 GMT+3.

Para deshacerse de los límites de la matriz, debe tratar con las direcciones de la matriz.

Para obtener los índices o el tiempo de las barras debemos copiar el tiempo de las barras CopyTime() o CopuRates() junto con la copia del buffer del indicador, donde también existe el OHLC de las barras.

Como no podemos evitar el ciclo, yo utilizaría la segunda forma de la función

int  CopyBuffer(
   int       indicator_handle,     // handle индикатора
   int       buffer_num,           // номер буфера индикатора
   datetime  start_time,           // с какой даты
   int       count,                // сколько копируем
   double    buffer[]              // массив, куда будут скопированы данные
   );

La siguiente condición: si se copia un valor mayor que cero, ese es un punto ZigZag y obtendremos el extremo superior o inferior comparando ese valor con el Alto y el Bajo de esa barra.

 

Gente, por favor ayúdenme a entender qué diablos está pasando en MQL5 con la contabilidad de pedidos.

Estoy tratando con programadores y parece que no somos capaces de tener órdenes claramente basadas en los principios utilizados en MQL4 - no podemos establecer un número mágico para una orden, entonces es imposible seleccionar las posiciones necesarias basadas en un número mágico simplemente probando OrdersTotal() y detectar qué orden fue abierta por un EA y cuál fue abierta manualmente, etc., no podemos cerrar una determinada orden basada en un ticket, y es imposible crear una escalera de órdenes en una dirección y luego cerrar la orden más antigua, etc.

¿Podrían las metacotizaciones realmente hacer semejante mierda? ¿Cómo podemos trabajar sin ella?

 
Artyom Kuraev:

Gente, por favor ayúdenme a entender qué diablos está pasando en MQL5 con la contabilidad de pedidos.

Estoy tratando con programadores y mi impresión es que no podemos contar correctamente las órdenes según ese principio que se utilizaba en MQL4 - no se puede establecer un número mágico para una orden, no se puede simplemente seleccionar las posiciones necesarias mediante búsquedas en OrdersTotal() basadas en el número mágico y luego determinar qué orden fue abierta por un EA y cuál fue abierta manualmente, etc., no se puede cerrar una determinada orden según el ticket, no se puede crear una escalera de órdenes en una dirección y luego cerrar la más antigua de ellas, etc.

¿Podrían las metacitas haber hecho esta mierda? ¿Cómo se puede trabajar sin ella?

¿Dónde se encuentran estos programadores?

Todo esto es una absoluta tontería. Dónde enviar a ese programador, espero que lo entienda.

Bueno, por si acaso, para que no se me escape, aquí tienes un apunte.