¡¡¡¡¡¡¡inicialización global fallida!!!!!!! - página 3

 

¡Gracias por las pistas!

Desde el 646 están ocurriendo cosas extrañas, ¡y nadie parece ser capaz de ayudar!

1. Las etiquetas se salen de la línea, como si las XDISTANCE y YDISTANCE no fueran obedecidas.

Se vuelven a alinear sólo después de cambiar Tf's de un lado a otro.

Después de cambiar las ventanas del gráfico o de cambiar los parámetros de entrada, se desalinean.

2. Algunos indis antiguos bloquean la MT4.

3. 3. Después de iniciar MT4 primero se registra en la cuenta, después de un tiempo se cierra la sesión, y tengo que volver a entrar.

4. 4. Los scripts y EA's con OrderClose() no funcionan, no cierran las órdenes.

OrderModify() funciona bien.

¿Qué podemos hacer para que MetaQuotes haga algo al respecto?

¡¡¡Después de todo, MT4 es una plataforma de trading, por lo tanto una herramienta seria, no un juguete!!!

Ah, y una cosa más:

Digamos que estoy creando un rectángulo con un indi, basado en algunos cálculos.

Los cálculos están dentro del start().

Aun así, no veo mi rectángulo después de iniciar MT4, ni siquiera en los ticks.

Pero, después de reiniciar el indi o cambiar de Tf's, está ahí.

¡Ahora, este tipo de cosas nunca sucedió antes!

 
Dadas:

¡Gracias por las pistas!

Desde el 646 están pasando cosas extrañas, ¡y nadie parece ser capaz de ayudar!

1. Las etiquetas se salen de la línea, como si las XDISTANCE y YDISTANCE no fueran obedecidas.

Se vuelven a alinear sólo después de cambiar Tf's de un lado a otro.

Después de cambiar las ventanas del gráfico o de cambiar los parámetros de entrada, se desalinean.

eso significa que puedes arreglarlo en tu código

2. Algunos indis antiguos bloquean la MT4.

tienes que adaptar el código al nuevo mundo, (B600 >) por ejemplo "zero divide" es un error crítico y hace desaparecer el indicador (antes de B600 no lo era)

3. 3. Después de iniciar MT4 primero se registra en la cuenta, después de un tiempo se cierra la sesión, y tengo que volver a entrar.

intenta cerrar todos los gráficos abiertos, deja el terminal en blanco (sin gráficos abiertos), reinicia el terminal, si el problema continúa, informa al servicio técnico

4. 4. Los scripts y EA's con OrderClose() no funcionan, no cierran las órdenes.

Estoy seguro de que el problema está en tu código, muéstranos el código correspondiente y alguien intentará ayudarte

OrderModify() funciona bien.

¿Qué podemos hacer para que MetaQuotes haga algo al respecto?

¡¡¡Al fin y al cabo, MT4 es una plataforma de trading, por tanto una herramienta seria, no un juguete!!!

Estoy de acuerdo, pero creo (casi seguro) que el error crítico está en tu código, estás usando un código desactualizado, es decir, fue escrito con errores en su momento, errores que no impedían el funcionamiento del indicador/EA, pero ahora son errores cruciales y deben ser corregidos

 

Dadas,

Soy un colega desarrollador y no puedo responder a todas tus preguntas. Yo mismo estoy lidiando con algunos problemas de PITA en aplicaciones que pretendo llevar a nivel comercial. Una cosa que definitivamente sugiero, es reemplazar al menos tus funciones init y deinit con nuevas funciones OnInit() y OnDeInit(). También podrías reemplazar start por OnStart(). Según la documentación, se supone que la implementación es compatible con versiones anteriores, pero mi experiencia dice lo contrario. Tuve una situación en uno de mis indies en la que no se llamaba a deinit(). Mi deinit() estaba borrando objetos y cualquier cosa que causara una reinicialización fallaba porque los objetos todavía existían. Todavía uso start() en lugar de OnStart() pero no estoy seguro de la sabiduría de eso. Tengo la corazonada de que me estoy buscando problemas más adelante. Hazme saber lo que pasa si decides probar mis sugerencias. Los desarrolladores tenemos que mantenernos unidos :-)

 
Dadas:

Ah, y una cosa más:

Digamos que estoy creando un rectángulo con un indi, basado en algunos cálculos.

Los cálculos están dentro del start().

Aún así, no veo mi rectángulo después de iniciar MT4, ni siquiera en los ticks.

Pero, después de reiniciar el indi o cambiar de Tf's, está ahí.

¡Ahora, este tipo de cosas nunca sucedió antes!


como escribí arriba, hay un nuevo mundo por delante
no se "empieza" a utilizar "OnTick" (EA) o "OnCalculate" (indicador)
 
qjol:

como he escrito arriba, el nuevo mundo está por delante de nosotros
no "empiezan" a usar "OnTick"


¡Mira, MetaQuotes está lanzando una plataforma que, comodice ProfessorMetal , se suponeque es compatible con versiones anteriores!

No creo que nadie sea capaz de reescribir todos los miles de indicadores, scripts y EA's ya existentes.

En cuanto a sus sugerencias de que mis códigos están mal, no estoy de acuerdo, algunas de las etiquetas son sólo los códigos más simples.

No hay nada para ellos, crean un objeto de etiqueta, calcular algo, a continuación, establecer el objeto en consecuencia.

No hay ninguna filosofía especial adjunta:

  ObjectSet    ("Lot_Size_Label",OBJPROP_CORNER,Corner);

  ObjectSet    ("Lot_Size_Label",OBJPROP_XDISTANCE,XDistance);
  ObjectSet    ("Lot_Size_Label",OBJPROP_YDISTANCE,YDistance);
  ObjectSetText("Lot_Size_Label",comment,Font_Size,Font_Type,Font_Color);
  ObjectSet    ("Lot_Size_Label",OBJPROP_SELECTABLE,false); 

En cuanto a los scripts de cierre de órdenes y EA's, estoy hablando de los que solían funcionar bien en Builds anteriores (500).

Por lo tanto, no es una cuestión de que mis códigos sean correctos o no.

Es el problema de que MetaQuotes está jodiendo las cosas.

Probaré los consejos de ProfessorMetal ,pero ¿qué pasa con los usuarios que no saben nada de codificación?

Y, francamente hablando, ¡se supone que ni siquiera saben nada de codificación!

¡¡Se supone que están usando la plataforma de comercio!!

 
ProfessorMetal:

Dadas,

Soy un colega desarrollador y no puedo responder a todas tus preguntas. Yo mismo estoy lidiando con algunos problemas de PITA en aplicaciones que pretendo llevar a nivel comercial. Una cosa que definitivamente sugiero, es reemplazar al menos tus funciones init y deinit con nuevas funciones OnInit() y OnDeInit(). También podrías reemplazar start por OnStart(). Según la documentación, se supone que la implementación es compatible con versiones anteriores, pero mi experiencia dice lo contrario. Tuve una situación en uno de mis indies en la que no se llamaba a deinit(). Mi deinit() estaba borrando objetos y cualquier cosa que causara una reinicialización fallaba porque los objetos todavía existían. Todavía uso start() en lugar de OnStart() pero no estoy seguro de la sabiduría de eso. Tengo la corazonada de que me estoy buscando problemas más adelante. Hazme saber lo que pasa si decides probar mis sugerencias. Los desarrolladores tenemos que estar juntos :-)


Gracias, yo tenía el mismo problema con los objetos que no se borraban al deinit.

Estaba desarrollando algunos indi, y obtuve estos resultados extraños, luego vi en la lista de objetos, que todavía estaban allí.

Conseguí evitarlo, probablemente de la manera más sencilla, mediante ObjectDelete() en el inicio().

Sí, cambiando init() por OnInit() y deinit() por OnDeinit() conseguí que las etiquetas volvieran a estar bien. ¡Gracias!

Luego, después de un tiempo, ¡¡¡no lo hizo!!! Siguen haciendo el mismo baile.

 

Si el código es el más sencillo, su implementación depende realmente de los códigos que se implementen. Necesitas tener una comprobación de errores en puntos cruciales para que cuando el error ocurra, el indi/ea pueda manejarlo correctamente. Yo también tuve problemas la última vez, pero una vez que puse los manejadores de error, se ejecuta sin problemas hasta el punto de que se olvidó de los problemas que surge la última vez.


still, what about the users who don't know a thing about coding???

And, frankly speaking, they aren't even supposed to know anything coding!

They are supposed to be using the trading platform!!!

La plataforma es un metatrader, y viene con todas las necesidades básicas, nadie te obliga a codificar.

 

¿Sabes qué ayudó a alinear las etiquetas?

Mis coordenadas X,Y están tomadas de las externas.

extern int XDISTANCE =9;
extern int YDISTANCE =9;

Entonces:

int X,Y;

int OnInit()
  {
 X = XDISTANCE;
 Y = YDISTANCE;
 ObjectCreate("INSTR",OBJ_LABEL,0,0,0); 
 
    return(0);
  }

int start() {
        ObjectSet("INSTR",OBJPROP_CORNER,Corner);
        ObjectSetText("INSTR",Symbol_Period+Date_Time,FontSize, "Berlin Sans FB", Color);
        ObjectSet("INSTR", OBJPROP_XDISTANCE, X);
        ObjectSet("INSTR", OBJPROP_YDISTANCE, Y); 
        ObjectSet("INSTR", OBJPROP_SELECTABLE, false);   
   return(0);
  }

De esta manera lo hace bien.

O, más bien, hace las cosas mejor, no exactamente bien.

 
deysmacro:

Si el código es el más sencillo, implementarlo realmente depende de los códigos que se implementen.


La plataforma es un metatrader, y viene con todas las necesidades básicas, nadie te obliga a codificar.


¿Cómo se supone que tu comentario va a ayudar a alguien?
 
int X,Y;

int OnInit()
  {
 X = XDISTANCE;
 Y = YDISTANCE;
 ObjectCreate("INSTR",OBJ_LABEL,0,0,0); 
 
    return(0);
  }

int start() {
        ObjectSet("INSTR",OBJPROP_CORNER,Corner);
        ObjectSetText("INSTR",Symbol_Period+Date_Time,FontSize, "Berlin Sans FB", Color);
        ObjectSet("INSTR", OBJPROP_XDISTANCE, X);
        ObjectSet("INSTR", OBJPROP_YDISTANCE, Y); 
        ObjectSet("INSTR", OBJPROP_SELECTABLE, false);   
   return(0);
  }

No se pone ninguna función de búsqueda de objetos para comprobar si el objeto ya existe o no. A partir de ahí, entonces creas el objeto como corresponde.


How's your comment supposed to help anybody??? 

Te estoy ayudando, ahora mismo.