Errores, fallos, preguntas - página 3018

 
Artyom Trishkin:

A continuación, tendrá que dibujar a la línea del indicador + velas para el indicador que debe ser dibujado debajo de las velas. Para los otros, que se dibujan por encima de las velas, configure el gráfico para dibujar las velas en el fondo. Personalmente no veo otra manera.

Pero, en términos de conveniencia y flexibilidad de la construcción de programas en MQL5, puede pedir a los desarrolladores de MQL5 para crear una propiedad para el búfer indicador (para cualquiera de los búferes indicador).

 

en la build 2940 reescribieron Alglib, ahora trabajar con números complejos es una estructura (había una clase)

y cometió errores:

#include <Math\Alglib\complex.mqh>
void OnStart()
{
      al_complex a(1, 2);
      al_complex b(3, 4);
      a += b;
      printf("tst#1 : a.real = %f , a.imag = %f", a.re, a.im);

      al_complex c(1, 2);
      al_complex d(3, 4);
      c -= d;
      printf("tst#2 : c.real = %f , c.imag = %f", c.re, c.im);
 }

2021.05.23 21:49:35.210 tst (EURUSD,H1) tst#1 : a.real = 4.000000 , a.imag = 6.000000

2021.05.23 21:49:35.210 tst (EURUSD,H1) tst#2 : c.real = 4.000000 , c.imag = 6.000000


complejo de fuentes .mqh

//+------------------------------------------------------------------+
//| Overloading (+=)                                                 |
//+------------------------------------------------------------------+
void al_complex::operator+=(const al_complex &rhs)
  {
   re+=rhs.re;
   im+=rhs.im;
  }
//+------------------------------------------------------------------+
//| Overloading (-=)                                                 |
//+------------------------------------------------------------------+
void al_complex::operator-=(const al_complex &rhs)
  {
   re+=rhs.re;
   im+=rhs.im;
  }
 

No recuerdo que se haya anunciado un nuevo complejo de tipos de datos, pero sin las bibliotecas de plugins todo funciona correctamente:

void OnStart()
{
      complex a(1, 2);
      complex b(3, 4);
      a += b;
      printf("tst#1 : a.real = %f , a.imag = %f", a.real, a.imag);

      complex c(1, 2);
      complex d(3, 4);
      c -= d;
      printf("tst#2 : c.real = %f , c.imag = %f", c.real, c.imag);
 }

2021.05.23 21:54:13.976 tst (EURUSD,H1) tst#1 : a.real = 4.000000 , a.imag = 6.000000

2021.05.23 21:54:13.976 tst (EURUSD,H1) tst#2 : c.real = -2.000000 , c.imag = -2.000000




¿de dónde viene el nuevo tipo de complejo? .... no hay nada en la ayuda, ¿y qué más se ha añadido?

 
Igor Makanu:

No recuerdo que se haya anunciado un nuevo complejo de tipos de datos, pero sin las bibliotecas de plugins todo funciona correctamente:

2021.05.23 21:54:13.976 tst (EURUSD,H1) tst#1 : a.real = 4.000000 , a.imag = 6.000000

2021.05.23 21:54:13.976 tst (EURUSD,H1) tst#2 : c.real = -2.000000 , c.imag = -2.000000




¿de dónde viene el nuevo tipo de complejo? .... no hay nada en la ayuda, ¿y qué más se ha añadido?

Los desarrolladores han confirmado que se han añadido nuevos tipos. Recientemente.

 
Igor Makanu:

No recuerdo que se haya anunciado un nuevo complejo de tipos de datos, pero sin las bibliotecas de plugins todo funciona correctamente:

2021.05.23 21:54:13.976 tst (EURUSD,H1) tst#1 : a.real = 4.000000 , a.imag = 6.000000

2021.05.23 21:54:13.976 tst (EURUSD,H1) tst#2 : c.real = -2.000000 , c.imag = -2.000000

¿de dónde viene el nuevo tipo de complejo? .... no hay nada en la ayuda, ¿y qué más se ha añadido?

Aquí:

7. MQL5: Se ha añadido soporte para operaciones con números complejos.


Se ha añadido un nuevo tipo incorporado "complejo".
struct complex
  {
   double             real;   // вещественная часть
   double             imag;   // мнимая часть
  };
El tipo "complejo" se puede pasar por valor como parámetro para las funciones MQL5 (a diferencia de las estructuras habituales, que se pasan sólo por referencia). Para las funciones que se importan de la DLL, el tipo "complejo" debe pasarse sólo por referencia.

Para describir las constantes complejas se utiliza el sufijo "i":
.
complex square(complex c)
  {
   return(c*c);
  }
  
void OnStart()
  {
   Print(square(1+2 i));  // в качестве параметра передается константа
  }

// будет выведено "(-3,4)" - это строковое представление комплексного числа
Para los números complejos sólo hay operaciones simples: =, +, -, *, /, +=, -=, *=, /=, ==, !=.

En el futuro se añadirán más funciones matemáticas: obtención del valor absoluto, seno, coseno y muchas otras.
Новая версия платформы MetaTrader 5 build 2940: Перенос витрин MQL5-сервисов в рабочую область и обновление дизайна
Новая версия платформы MetaTrader 5 build 2940: Перенос витрин MQL5-сервисов в рабочую область и обновление дизайна
  • 2021.05.14
  • www.mql5.com
В пятницу 21 мая 2021 года будет выпущена обновленная версия платформы MetaTrader 5...
 
Artyom Trishkin:

Aquí:

7. MQL5: Se ha añadido soporte para trabajar con números complejos.


Se ha añadido un nuevo tipo incorporado "complejo".
El tipo complejo se puede pasar por valor como parámetro para las funciones MQL5 (en contraste con las estructuras habituales, que se pasan sólo por referencia). Para las funciones que se importan de la DLL, el tipo "complejo" debe pasarse sólo por referencia.

Para describir las constantes complejas se utiliza el sufijo 'i':
Para los números complejos sólo se dispone actualmente de operaciones simples: =, +, -, *, /, +=, -=, *=, /=, ==, !=.

En el futuro se añadirán más funciones matemáticas: obtención del valor absoluto, seno, coseno y muchas otras.

OK gracias, es una pena que la ayuda se añada tarde

 
Error de ejecución:
void OnStart()
{
    const string text[] = { "ABC", "", "ABC" };
    uchar array[];
    int start = 0;
    int n = 0;
    for ( int i = 0; i < ArraySize( text ); i++ )
    {
        const int count = StringLen( text[ i ] );
        n += StringToCharArray( text[ i ], array, start, count );
        start += count;
    }
    Print( ArraySize( array ), ":", n );
}

Resultado: 6:7

Esperado: 6:6

 
A100:
Error de ejecución:

Resultado: 6:7

Esperado: 6:6

count = 0 - sólo se copia el final de la cadena. Sin embargo, "" != NULL.

 
fxsaber:

count = 0 - sólo se copia el final de la cadena. Todavía "" != NULL.

¿Y cuántos

StringToCharArray

¿debe copiar en la cuenta = 0?

Sugerencia: se copian 3 caracteres cuando el recuento = 3

 
A100:

¿debe copiar los caracteres cuando el recuento = 0?

parece que count=0 funciona igual que count=-1 y en el caso de "" copia un nulo terminal, por lo que sin comprobaciones adicionales no se puede convertir una cadena vacía normalmente

Razón de la queja: