Número complexo (complex, complexf)

O tipo integrado complex é uma estrutura com dois campos double:

struct complex
  {
   double             real;   // parte real
   double             imag;   // parte imaginária
  };

O tipo integrado complexf é uma estrutura com dois campos float:

struct complexf
  {
   float              real;   // parte real
   float              imag;   // parte imaginária
  };

 

Os tipos complex e complexf podem ser passados por valor como parâmetros de funções MQL5 (ao contrário das estruturas comuns, que são passadas apenas por referência). Para funções importadas de DLLs, os tipos complex e complexf devem ser passados apenas por referência.

O sufixo 'i' é usado para descrever constantes complexas:

complex square(complex c)
  {
   return(c*c);
  }  
void OnStart()
  {
   Print(square(1+2i));  // Uma constante é passada como parâmetro
  }
// Será exibido "(-3,4)", que é a representação em string do número complexo 

Atualmente, apenas operações simples estão disponíveis para números complexos: =, +, -, *, /, +=, -=, *=, /=, ==, !=.

O suporte a funções matemáticas adicionais será acrescentado posteriormente, permitindo calcular valor absoluto, seno, cosseno e outras.

vectorc

Um array unidimensional de números do tipo complex destina-se ao trabalho com números complexos. A notação vector<complex> pode ser usada em funções de modelo.

matrixc

Um array bidimensional de números do tipo complex destina-se ao trabalho com números complexos. A notação matrix<complex> pode ser usada em funções de modelo.

vectorcf

Um array unidimensional de números do tipo complexf destina-se ao trabalho com números complexos. A notação vector<complexf> pode ser usada em funções de modelo.

matrixcf

Um array bidimensional de números do tipo complexf destina-se ao trabalho com números complexos. A notação matrix<complexf> pode ser usada em funções de modelo.