Errores, fallos, preguntas - página 2797

 
Roman:

Imagen 2530

En el tercer anexo de la estructura, no aparece IntelliSense.

La inteligencia de IntelliSense sigue dando resultados ))


es decir, una pista es todo lo que puedes contar

 
Nikolai Karetnikov:

La inteligencia de IntelliSense sigue dando resultados ))

es decir, una pista es todo lo que puedes contar

Mi post se refería a las estructuras anidadas, no aparece ninguna selección de IntelliSense en la tercera anidación.
Lo cual es muy molesto, porque las estructuras anidadas estaban planeadas para ser usadas sólo para la selección en el intellisense.
Y como no aparece, tengo que volver a la estructura y mirar qué campos hay. No es bueno.
Me gustaría que lo arreglaran.

En cuanto a tu ejemplo, para las funciones MQL estándar las pistas son claras.
Si no entiendes la información sobre la herramienta, pon el cursor en la función y pulsa F1.

 
Mihail Matkovskij:

Sustituyó la función ObjectDeleteAll primero en su ejemplo:

Luego en el indicador.

Resultó fácil utilizarObjectDeleteAll en mi proyecto. Para eliminar todos los objetos, sólo tuve que cambiar el prefijo 3 veces y llamar a ObjectDeleteAll 3 veces. El gráfico es claro como resultado. El lenguaje MQL5 tiene muchas sutilezas. Pero al mismo tiempo es un lenguaje muy bien pensado.

Gracias a todos los que me han ayudado a resolver este problema.

Aquí tienes otra vez:

    trend = new CChartObjectTrend();
    if(trend.Create(0, "trend"+(string)i, 0, time[shift], low[shift], time[shift], high[shift]))
      listOfTrendLines.Add(trend);
    else
      delete trend;

Un agujero potencial para filtrar. Mira lo que devuelve el método Add()

(Sé que es una prueba, sé que está bien comprobarlo, pero si estás comprobando el resultado de la creación, ¿por qué no comprobar el resultado de la suma? Disciplinado para el futuro)
 
Artyom Trishkin:

Una vez más tienes aquí:

Un agujero potencial para filtrar. Mira lo que devuelve el método Add()

(Entiendo que es una prueba, entiendo que sirve para comprobar, pero si compruebo el resultado de la creación, ¿por qué no comprobar el resultado de la suma? Disciplina para el futuro)

Pues haz esto:

    trend = new CChartObjectTrend();
    if(trend.Create(0, "trend"+(string)i, 0, time[shift], low[shift], time[shift], high[shift])) {
      if(!listOfTrendLines.Add(trend))
        delete trend;
    }
    else
      delete trend;

Eso es todo. ¿Ahora no hay agujero?

En realidad se trata de un programa de prueba y cumplió su cometido. No necesito nada más de él. Si funcionara, tendría un enfoque y un concepto diferentes. Los mensajes de error van desde cada punto crítico con indicación de la línea (__LINE__) y el nombre de la función (__FUNCTION__) ... Así que, a veces, tampoco necesito usar la depuración. Sólo miro, nombre del módulo, número de línea, nombre de la función...

 

Hola a todos. El problema es el siguiente...

Tras la actualización, el acceso directo al terminal MT5 ha desaparecido, tanto en el escritorio como en la carpeta raíz. Lo he reinstalado. Después de reiniciar mi PC, la historia se repitió. ¿Cuál es el problema? ¿Alguien ha tenido problemas con esto?

 
Artyom Trishkin:

Aquí lo tienes de nuevo:

Un agujero potencial para filtrar. Mira lo que devuelve el método Add()

(Ya sé que es una prueba, entiendo que sirve para comprobar, pero si se comprueba el resultado de la creación, ¿por qué no comprobar el resultado de la suma? Disciplina para el futuro)

¿Y en qué casos puede fallar listOfTrendLines.Add? Simplemente no los conozco. Aunque me adhiero a ese principio, donde "no hay controles innecesarios" (c). Pero hipotéticamente podemos suponer que se puede llegar a la paranoia. Ok, el método Create de una clase de objeto gráfico puede fallar. Pero siempre funciona correctamente si el código está escrito correctamente y el programa da nombres normales a los objetos. Pero digamos que puede haber fallos en su uso... Pero cómo puede el método Add devolver un objeto falso en condiciones normales. O la función ArrayResize (que, por cierto, se utiliza en este método), ¿cómo puede devolver resultado diferente de new_size. A menos que no haya suficiente memoria... :) Pero, ¿dónde has visto dispositivos modernos con un déficit de memoria tan grande? :)

 
Mihail Matkovskij:

¿En qué casos puede fallar listOfTrendLines.Add? Simplemente no estoy al tanto de ellos. Aunque me adhiero al principio de que "no hay controles innecesarios" (c). Pero hipotéticamente podemos suponer que se puede llegar a la paranoia. Ok, el método Create de una clase de objeto gráfico puede fallar. Pero siempre funciona correctamente si el código está escrito correctamente y el programa da nombres normales a los objetos. Pero digamos que puede haber fallos en su uso... Pero cómo puede el método Add devolver un objeto falso en condiciones normales. O la función ArrayResize (que, por cierto, se utiliza en este método), ¿cómo puede devolver resultado diferente de new_size. A menos que no haya suficiente memoria... :) Pero, ¿dónde has visto un sistema moderno con déficit de memoria? :)

Vps por lo general.
P.d. Creo que eres injusto con Alexei porque fue él quien dio el primer y correcto consejo y de todos modos te ayudó
 
Mihail Matkovskij:

Sustituyó la función ObjectDeleteAll primero en su ejemplo:

Luego en el indicador.

Resultó fácil utilizarObjectDeleteAll en mi proyecto. Para eliminar todos los objetos, sólo tuve que cambiar el prefijo 3 veces y llamar a ObjectDeleteAll 3 veces. El gráfico es claro como resultado. El lenguaje MQL5 tiene muchas sutilezas. Pero al mismo tiempo es un lenguaje muy bien pensado.

Gracias a todos los que me han ayudado a resolver este problema.

Me pregunto si has revisado la documentación o simplemente has tomado la descripción de la función de mi post.

Sospecho que sólo tienes objetos gráficos que tienen tendencia. Si es así, ¿por qué necesita un prefijo? También existe una eliminación por tipo de objeto

int  ObjectsDeleteAll(
   long  chart_id,            // идентификатор графика
   int   sub_window=-1,       // индекс окна
   int   type=-1              // тип объекта для удаления
   );

Por lo tanto, no hay que cambiar nada en el proyecto, sino simplemente escribir

ObjectsDeleteAll(0, 0, OBJ_TREND);
)))))))))))))
 
Aleksei Beliakov:
Vps por lo general.
P.D. Me parece que has tratado injustamente a Alexei, después de todo fue él quien dio el primer y correcto consejo y de todos modos te ayudó

¿Dónde está la injusticia en eso, me da vergüenza preguntar...? Creo que estoy bien con Alexei. ¿Eres pariente de él?

 
Alexey Viktorov:

Me pregunto si has mirado la documentación o simplemente has tomado la descripción de la función de mi post.

Sospecho que sólo tiene objetos gráficos con tendencia. Si es así, ¿por qué necesita un prefijo? También existe una eliminación por tipo de objeto

para no tener que cambiar nada en el proyecto.

)))))))))))))

Esto es sólo un caso especial. El prefijo es general y universal. Además, la eliminación de todas las líneas de tendencia también afectará a los objetos que no pertenecen al programa.