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

 
Barbarian:

Seguramente no has leído mi post de arriba en el que describía lo que se está escribiendo hasta ahora con las versiones beta de MT4. En nix cada uno trabaja en sus propias cajas de arena por completo, sólo el usuario root pone los programas comunes y distribuye los derechos para su uso por otros usuarios. La ideología es completamente diferente allí, aunque parece similar a la de Microsoft. Por cierto, no me importa que la versión beta escriba las configuraciones del usuario en X:\N-xxx\Data\Roaming\MetaQuotes\Terminal, me importa lo siguiente:

1. Que crea un subdirectorio X:\Nde Users\x\AppData\NRoaming\NMetaQuotes\NTerminal\NB5589D10299052C8D921603EBD1F9752\Nque hasta que no llegues allí no sabrás su nombre, además cambia su nombre con cada actualización.

2. Esta ruta se utiliza no sólo para escribir la configuración del usuario, sino también para los archivos ejecutables - indicadores, Asesores Expertos, scripts, etc., en general, todas las cosas para las que usted no dejará a un extraño en su PC, incluso bajo un nombre de usuario diferente. Aunque esto, por supuesto, puede evitarse más adelante, pero a qué precio.

Lo que más miedo me da es el primer punto, ya que al utilizar la lectura/escritura de archivos, el código para utilizar estas operaciones se complicará.


Lo he leído y estoy totalmente de acuerdo contigo. Lo que escribí - no sería una mala idea para configurar la ruta en el terminal. A veces es útil compartir configuraciones, archivos, EAs... A veces no.
 
Antonsan:

Escribo en español. Y traduzco con Google.

La traducción al inglés es tan mala, que la traducción al ruso.

Este indicador está preparado para EA y dibuja sólo unas pocas barras.
Cambiando el marco temporal he observado que a veces el indicador se repite en la pantalla.
A veces parece que se ejecuta varias veces y dibuja la línea correctamente, otras veces parece que son copias idénticas ordenadas en la historia.

Esto tenía tres copias idénticas en la historia, pero para reducir la captura de pantalla, sólo vio dos.

Se produce cuando el terminal descarga el historial de otro TF.

Se debe borrar todo el buffer después de la inicialización del indicador. O dibujar todas las barras.

 
ALXIMIKS:


He descrito mi idea (cambiar el gráfico insertando el presente en el pasado, inventando al mismo tiempo el futuro), si no está muy claro, pues alas........

Me gustaría que me sugirieran otra forma de dibujar lo necesario en las barras negativas con valores adecuados en las barras positivas.

Lo que hay que poner donde no es importante. Lo importante es lo que debe extraerse como resultado.

Si necesitas un trozo del pasado y del futuro, necesitas un buffer y SetIndexShift para el número necesario de barras en el futuro (se obtiene del pasado).

Si sólo se necesita el futuro - de nuevo un buffer, SetIndexShift( bars ), y rellenar sólo los valores de "bars".

Y si necesitas el pasado por completo (crítico, incluso las barras de la izquierda deben estar llenas) y una parte del futuro, entonces 2 buffers, cada uno para lo suyo.

En general, no veo el problema.

 

Ahora se ha corregido el error por el que los parámetros externos declarados como cadena perdían valores. Gracias

El siguiente problema es con las llamadas a iCustom(). Si el indicador llamado contiene parámetros de cadena, se produce el siguiente error:


Código para "_master" :

#property indicator_chart_window
#property indicator_buffers 1

extern string TestString = "whatever value that we want initially set";

double firstBuffer[];

int OnInit() { SetIndexBuffer(0,firstBuffer); return(0); }
int deinit() {                                return(0); }
int start ()
{
   firstBuffer[0] = iCustom(NULL,0,"_slave","",0,0);
   Comment(firstBuffer[0]);
   return(0);
}

Código para "_slave" :

#property indicator_chart_window
#property indicator_buffers 1

extern string TestString = "whatever value that we want initially set";

double firstBuffer[];

int OnInit() { SetIndexBuffer(0,firstBuffer); return(0); }
int deinit() {                                return(0); }
int start()
{
   firstBuffer[0] = 1;
   return(0);
}

Se produce un error diferente cuando el parámetro no es de tipo cadena

Cuando se declara como entero se recarga la instancia "_slave" una y otra vez (como en el caso de que el tipo de parámetro sea erróneo)

Código para "_master integer" (utilizando un parámetro de tipo entero en la llamada iCustom() :

#property indicator_chart_window
#property indicator_buffers 1

double firstBuffer[];

int OnInit() { SetIndexBuffer(0,firstBuffer); return(0); }
int deinit() {                                return(0); }
int start ()
{
   firstBuffer[0] = iCustom(NULL,0,"_slave integer",(int)0,0,0);
   Comment(firstBuffer[0]);
   return(0);
}

Y el código de "_slave integer" :

#property indicator_chart_window
#property indicator_buffers 1

extern int dummy = 0;

double firstBuffer[];

int OnInit() { SetIndexBuffer(0,firstBuffer); return(0); }
int deinit() {                                return(0); }
int start()
{
   firstBuffer[0] = 1;
   return(0);
}

Cuando el parámetro en el indicador llamado se declara como doble entonces funciona bien

 

Creo que debe haber algún problema con el terminal, que no borre bien la memoria de datos, o cualquier otro problema que desconozca.

Si estas situaciones pueden ocurrirle a un experto, seguramente recibirá datos erróneos.

Esto es más bien un programa de dibujo de árboles de Navidad.

 
mladen:

Cuando el parámetro en el indicador llamado se declara como doble entonces funciona bien


Lo comprobaremos lo antes posible. Gracias
 
Antonsan:

Escribo en español. Y traduzco con Google.

La traducción al inglés es tan mala, que la traducción al ruso.

Este indicador está preparado para EA y dibuja sólo unas pocas barras.
Cambiando el marco temporal he observado que a veces el indicador se repite en la pantalla.
A veces parece que se ejecuta varias veces y dibuja la línea correctamente, otras veces parece que son copias idénticas ordenadas en la historia.

Esto tenía tres copias idénticas en la historia, pero para reducir la captura de pantalla, sólo vio dos.

Hola! Escriba en el español! ¡Se lo traduciré al ruso! ¡Suerte!
 
Antonsan:

Creo que debe haber algún problema con el terminal, que no borre bien la memoria de datos, o cualquier otro problema que desconozca.

Si estas situaciones pueden ocurrirle a un experto, seguramente recibirá datos erróneos.

Esto es más bien un programa de dibujo de árboles de Navidad.

La terminal no debería limpiar sus búferes. Sólo hay que inicializarlos una vez tras el lanzamiento del indicador.
 
stringo:

Corregido

También se han corregido los puntos 1 y 2

Punto 3, estamos trabajando en el depurador.

Para los puntos 4, 5 necesitamos saber cómo se reproducen. Paso a paso. No es reproducible sobre la marcha.

Gracias por los comentarios. Código enviado a servicedesk, #880536.
 

Error de documentación:

datetime iVolumen

debe ser

doble iVolumen