Errores, fallos, preguntas - página 758

 
Sí, ahora están cuatro segundos por delante.
 
¿Por qué desaparece el punto medio cuando la línea de tendencia cambia de posición?
 

¡Hola!

Necesito ver gráficamente cómo cambia el valor de una determinada variable en cada barra durante una prueba visual, es decir, necesito construir un gráfico independiente en una subventana. Por ejemplo, quiero ver un gráfico de los cambios de la equidad en cada barra en una ventana separada debajo del gráfico.

¿Qué debo hacer? ¿Debo escribir un indicador, adjuntarlo al gráfico y pasarle los valores de las variables del EA a través de las variables globales del terminal? ¿O hay una forma "mejor"?

Gracias de antemano.

Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Основы языка / Переменные / Глобальные переменные - Документация по MQL5
 
Alex5757000:

¡Hola!

Necesito ver gráficamente cómo cambia el valor de una determinada variable en cada barra durante una prueba visual, es decir, necesito construir un gráfico independiente en una subventana. Por ejemplo, quiero ver un gráfico de los cambios de la equidad en cada barra en una ventana separada debajo del gráfico.

¿Qué debo hacer? ¿Debo escribir un indicador, adjuntarlo al gráfico y pasarle los valores de las variables del EA a través de las variables globales del terminal? ¿O hay una forma "mejor"?

Gracias de antemano.

En absoluto, puedes obtener los valores de la equidad o del balance directamente en el indicador.

Definir los parámetros del búfer del indicador que se dibuja como un gráfico de barras.

Y escribe los cuatro valores en los buffers correspondientes,

Cuando se abre la barra, alta-baja y baja dinámica (última barra).

se ve así: en el archivo adjunto

Por supuesto, también se puede utilizar el valor absoluto (opción recomendada), pero creo que no mostrará los incrementos iniciales pequeños, por lo que creo que es mejor la diferencia entre el valor inicial y el actual.

ZS, pero no, la escala es dinámica así que puedes hacer la segunda opción, es bastante legible.

Archivos adjuntos:
 
Urain:

En absoluto, puedes obtener los valores de la equidad o del balance directamente en el indicador.

Establezca los parámetros para dibujar el buffer del indicador como un gráfico de barras.

y escribir los cuatro valores en los buffers correspondientes,

Abrir en la apertura de la barra, el máximo, el mínimo y el cierre dinámicamente (última barra).

Valores de equidad y balance - sí, pero ¿qué pasa si quiero ver el valor de una variable calculada en el EA?
 
Alex5757000:
Valores de equidad y balance - sí, pero ¿qué pasa si quiero ver el valor de una variable calculada en un EA?

Puedes hacerlo a través de un evento personalizado, sólo no olvides actualizar el gráfico después del evento,

porque el tick viene antes de procesar el evento, en orden de prioridad.

Pero es posible hacerlo con globals, pero hay el mismo problema - la garrapata ya ha llegado y la variable todavía se está procesando en el EA (sus cambios se están preparando), por supuesto, los datos se recibirán, pero habrá un retraso en una garrapata, todavía es más correcto en el evento, hay un lugar para poner actualizar el gráfico después del hecho, cuando ya se sabe a ciencia cierta que la variable tiene los datos reales.

 

Este código no compila con el error "'return' - la estructura tiene objetos y no se puede copiar" debido a la parada"CTest getCopy(void) {CTest res; return res;}".

Esto se puede arreglar de dos maneras:

1) cambiar"class" por"struct"

2) Descomentar el stopka con un operador de asignación sobrecargado.

Entonces, ¿debería ser así para que la función del constructor de copia sea realizada por el operador de asignación sobrecargado? ¿Por qué entonces no se menciona en el libro de referencia, salvo un ejemplo de una clase matriz (cuyo análisis detallado, por cierto, me permitió encontrar el error en mi código)?

class CTest
  {
public:
    CTest(void): cnt(0) {}
   ~CTest(void) {}
    CTest(const CTest& T) {cnt = T.cnt;} // copy constructor
    //------------------------
    CTest getCopy(void) {CTest res; return res;} 
    //------------------------
    //CTest* operator=(const CTest& T) {cnt = T.cnt; return GetPointer(this);}
private:
         int cnt;
  };
Документация по MQL5: Основы языка / Операторы / Оператор-выражение
Документация по MQL5: Основы языка / Операторы / Оператор-выражение
  • www.mql5.com
Основы языка / Операторы / Оператор-выражение - Документация по MQL5
 
WWer:

Este código no compila con el error "'return' - la estructura tiene objetos y no se puede copiar" debido a la línea"CTest getCopy(void) {CTest res; return res;}"

Por supuesto, no se puede devolver un objeto desde las funciones.(A diferencia de las estructuras.) Está documentado.


Esto se puede arreglar de dos maneras:

1) cambiar"class" por"struct"

Ver arriba.

2) Descomentar el stopka con un operador de asignación sobrecargado.

Por supuesto, el operador sobrecargado devuelve un puntero-manipulador, lo cual es normal. Ahora no es el objeto devuelto por la función getCopy() sino el puntero (el retorno de la función es una asignación implícita) lo que hace que el código sea correcto.

// Sólo sintácticamente correcto.

// La devolución de una variable no inicializada desde la función getCopy(), espero que sólo sirva para demostrar el problema de sintaxis y no pretenda ser razonable.

Entonces, ¿debería ser así para que la función del constructor de copia sea realizada por el operador de asignación sobrecargado?

Um... ¿Qué tienen que ver los roles? Puedes sobrecargar el operador de asignación de la forma que quieras y escribir el constructor de copia correctamente. El error en tu caso está en otra parte.


¿Por qué no se menciona en el libro de referencia, excepto en un ejemplo de una clase matriz (su análisis detallado, por cierto, me ayudó a encontrar el error en mi código)?

Porque el 11 de febrero de 2096785 a.C., el dinosaurio Vasya pisó por descuido a la lagartija Clava. Esto provocó una larga cadena de causas y consecuencias, que condujeron a la situación actual. No se puede evitar.

;)

 
MetaDriver:// El retorno de una variable no inicializada desde la función getCopy(), esperemos que sólo sirva para demostrar el problema de sintaxis, y no pretenda ser razonable.

¿Por qué se debe inicializar? Es una instancia de una clase que tiene un constructor precisamente para eso.

MetaDriver:
Um... ¿Qué tienen que ver los roles? Puedes sobrecargar el operador de asignación de la manera que quieras y escribir el constructor de copia correctamente. Tu error está en otro lugar completamente.

¿Y cómo escribir un constructor de copia correcto para este propósito?