MetaTrader 4 Build 529 beta liberado con nuevo compilador - página 118

 
Candid:

Las versiones de demostración de los indicadores no se inician. Al hacer clic con el botón derecho del ratón, la prueba no se ofrece en absoluto, al hacer doble clic y luego pulsar el botón "Prueba", el probador se carga, pero no responde en absoluto al botón "Inicio". El diario del Probador de Estrategias permanece en blanco. Se lanzan los Asesores Expertos. Construye 555.


En el 558 hay un pequeño cambio, si antes del procedimiento descrito con doble clic aparecía en el diario general el registro de carga y el siguiente de descarga de indicador, ahora no aparece el registro de descarga. Además, el indicador se muestra ahora en el probador sin mencionar la carpeta "mercado". Pero el registro de los probadores sigue impoluto.

Por lo que tengo entendido, nadie se ocupa del problema de las pruebas de las versiones demo de los indicadores, parece ser un eco de la búsqueda de errores en las pruebas de los Asesores Expertos. ¿Tal vez sea más fácil encontrar el error probando los indicadores?

 
stringo:

La función IndicatorCounted() era originalmente una muleta. Quien haya programado indicadores en tres, entenderá lo que quiero decir.

Hemos encontrado una solución elegante en cinco con el parámetro prev_calculado y el retorno del número de barras calculadas en la función OnCalculate. Y esta solución se ha trasladado a los nuevos cuatro



Hace mucho tiempo, pero sigue siendo bonito :)
 
Candid:
¿Las pruebas de los indicadores facilitarían la búsqueda de una avería?
Habrápruebas de indicadores, pero no ahora. Pero lo hará.
 
La función de creación de objetos de Kim parece estar obsoleta debido a la entrada OBJPROP_ANCHOR. Lo comprobaré ahora, pero todavía hay algunos problemas con los gráficos. Intentaré publicar todos los detalles con ejemplos más adelante.
 
stringo:

Repito. Estamos haciendo como en el Cinco. Tenga la amabilidad de aplicar un punto de anclaje más: especifique en qué parte del objeto se encuentra el punto de "anclaje" del mismo. En su caso, la esquina superior derecha del objeto.




Así, la función ObjectSet funciona de forma diferente en la nueva versión del terminal que en la antigua. Y tendremos que cambiar un poco todos los Asesores Expertos que utilizan la salida en un gráfico.

En la versión anterior, si seleccionamos ObjectSet(Nombre,OBJPROP_CORNER, 1);
, el punto de "anclaje" quedaría automáticamente en la esquina superior derecha del objeto. ¿Piensas dejar esto, por compatibilidad?

 
alexvd:

¿Has probado a lanzar un EA en un gráfico (no en el probador de estrategias)? ¿Algún mensaje en el cuaderno de bitácora?


PS. El problema se ha solucionado. Esperaremos a la próxima versión con una solución.

1. No, no he intentado adjuntar un EA a un gráfico. No he visto ninguna entrada en el diario del probador, excepto la salida estándar de su configuración. Por lo tanto, obtuve la salida de init() del EA, pero no hubo ninguna salida de start() del EA en el diario.

2. con prontitud. Gracias, lo esperamos.

 
Lion.Fx:

Resulta que la función ObjectSet funciona de forma diferente en la nueva versión del terminal que en la antigua. Y tendremos que cambiar un poco todos los Asesores Expertos que utilizan la salida de información en el gráfico.

En la versión anterior, si hacemos: ObjectSet(Nombre,OBJPROP_CORNER, 1);
El punto de anclaje se colocó automáticamente en la esquina superior derecha del objeto. ¿No piensas dejar esto, por la compatibilidad?

Pues sí, es deseable dejar el anclaje por defecto como en las construcciones antiguas.
 
Acabo de comprobar la función de Kim, que ha servido fielmente durante muchos años :) (gracias a él de nuevo).
Añadirle el parámetro OBJPROP_ANCHOR permitía colocar los objetos en su sitio (sin desplazamiento de coordenadas poco claro).

Gracias por añadir ANCHOR. Es más cómodo, aunque tendrás que arreglar muchas cosas con él.

Esta es la función:

//+------------------------------------------------------------------+
void SetLabel(string nm, string tx, string ft,color cl, int xd, int yd, int cr=0, int anch=0, int fs=9) {
  if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
  ObjectSetText(nm, tx, fs,ft);
  ObjectSet(nm, OBJPROP_COLOR    , cl);
  ObjectSet(nm, OBJPROP_XDISTANCE, xd);
  ObjectSet(nm, OBJPROP_YDISTANCE, yd);
  ObjectSet(nm, OBJPROP_ANCHOR, anch);   //<----------------
  ObjectSet(nm, OBJPROP_CORNER   , cr);
  ObjectSet(nm, OBJPROP_FONTSIZE , fs);
}
//+------------------------------------------------------------------+

y llamar:

  SetLabel("Hello",  "Hello" ,  FontType, FontColor,  20, 20, 3, 1, FontSize);

 
Lion.Fx:

Resulta que la función ObjectSet funciona de forma diferente en la nueva versión del terminal que en la antigua. Y tendremos que modificar un poco todos los EAs que utilicen la salida de información en el gráfico.

En la versión anterior, si hacemos: ObjectSet(Nombre,OBJPROP_CORNER, 1);
Entonces, el punto de "anclaje" iría automáticamente a la esquina superior derecha del objeto. ¿Piensas dejar esto, por compatibilidad?

Tiene sentido. Veamos qué podemos hacer.

PS. Han hecho exactamente eso.

 
He hecho un anexo a la solicitud abierta en ServiceDesk #907205 y adjunto un código para comprobarlo.