Erros, bugs, perguntas - página 3018

 
Artyom Trishkin:

Depois terá de desenhar para a linha do indicador + castiçais para o indicador que deve ser desenhado por baixo dos castiçais. Para os outros - que são desenhados por cima dos candelabros, definir o quadro para desenhar os candelabros ao fundo. Pessoalmente, não vejo outra forma.

Mas, em termos de conveniência e flexibilidade dos programas de construção na MQL5, pode pedir aos programadores da MQL5 que criem uma propriedade para o buffer de indicadores (para qualquer um dos buffers de indicadores).

 

em build 2940 reescreveram Alglib, agora trabalhar com números complexos é uma estrutura (havia uma classe)

e cometeu erros:

#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


complexo de fontes .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;
  }
 

Não me lembro que tenha sido anunciado um novo complexo de tipos de dados, mas sem bibliotecas plugin tudo 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 onde veio o novo tipo de complexo ? .... não há nada na ajuda, e que mais foi acrescentado?

 
Igor Makanu:

Não me lembro que tenha sido anunciado um novo complexo de tipos de dados, mas sem bibliotecas plugin tudo 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 onde veio o novo tipo de complexo ? .... não há nada na ajuda, e que mais foi acrescentado?

Houve uma confirmação dos programadores de que novos tipos foram acrescentados. Recentemente.

 
Igor Makanu:

Não me lembro que tenha sido anunciado um novo complexo de tipos de dados, mas sem bibliotecas plugin tudo 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 onde veio o novo tipo de complexo ? .... não há nada na ajuda, e o que mais foi acrescentado ?

Aqui:

7. MQL5: Apoio adicional para operações com números complexos.


Adicionado novo tipo incorporado "complexo".
struct complex
  {
   double             real;   // вещественная часть
   double             imag;   // мнимая часть
  };
O tipo "complexo" pode ser passado por valor como parâmetro para as funções MQL5 (em oposição às estruturas habituais, que são passadas apenas por referência). Para funções que são importadas de DLL, o tipo "complexo" deve ser passado apenas por referência.

Para descrever constantes complexas é utilizado o sufixo 'i':
.
complex square(complex c)
  {
   return(c*c);
  }
  
void OnStart()
  {
   Print(square(1+2 i));  // в качестве параметра передается константа
  }

// будет выведено "(-3,4)" - это строковое представление комплексного числа
Para números complexos apenas estão disponíveis operações simples: =, +, -, *, /, +=, -=, *=, /=, ==, !=.

Funções matemáticas adicionais serão acrescentadas no futuro: obter valor absoluto, seno, cosseno e muitas outras.
Новая версия платформы MetaTrader 5 build 2940: Перенос витрин MQL5-сервисов в рабочую область и обновление дизайна
Новая версия платформы MetaTrader 5 build 2940: Перенос витрин MQL5-сервисов в рабочую область и обновление дизайна
  • 2021.05.14
  • www.mql5.com
В пятницу 21 мая 2021 года будет выпущена обновленная версия платформы MetaTrader 5...
 
Artyom Trishkin:

Aqui:

7. MQL5: Apoio adicional para trabalhar com números complexos.


Acrescentou um novo tipo de "complexo" incorporado.
O tipo complexo pode ser passado por valor como parâmetro para funções MQL5 (em contraste com as estruturas habituais, que são passadas apenas por referência). Para funções que são importadas de DLL, o tipo "complexo" deve ser passado apenas por referência.

Para descrever constantes complexas é utilizado o sufixo 'i':
Para números complexos apenas estão actualmente disponíveis operações simples: =, +, -, *, /, +=, -=, *=, *=, /=, ==, !=.

Funções matemáticas adicionais serão acrescentadas no futuro: obter valor absoluto, seno, cosseno e muitas outras.

OK, obrigado, é uma pena que a ajuda seja acrescentada tardiamente.

 
Erro de execução:
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

Previsto: 6:6

 
A100:
Erro de execução:

Resultado: 6:7

Previsto: 6:6

contagem = 0 - apenas o fim da cadeia é copiado. No entanto "" != NULL.

 
fxsaber:

contagem = 0 - apenas o fim da cadeia é copiado. Ainda "" != NULL.

E quantos

StringToCharArray

deve copiar na contagem = 0 ?

Dica: 3 caracteres são copiados quando a contagem é = 3

 
A100:

deve copiar os caracteres quando contar = 0 ?

parece que a contagem=0 funciona da mesma forma que a contagem=-1 e no caso de "" copia um terminal nulo, por isso sem verificações adicionais uma cadeia vazia não pode ser convertida normalmente