Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 667

 
Roman Sharanov:

abaixo no arquivo de classe

Este método retorna um erro? Em caso afirmativo, defina-o na seção privada. Você pode fazer isso em sua totalidade:

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class newC
  {
private:
   int      m_var;
   double   varSqrt(void)           const { return ::MathSqrt(this.m_var); }
public:
                     newC(int var);
                    ~newC();
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
newC::newC(int var)
  {
      this.m_var = var;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
newC::~newC()
  {
  }
//+------------------------------------------------------------------+

Ou você pode retirá-lo:

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class newC
  {
private:
   int      m_var;
   double   varSqrt(void) const;
public:
                     newC(int var);
                    ~newC();
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
newC::newC(int var)
  {
      this.m_var = var;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
newC::~newC()
  {
  }
//+------------------------------------------------------------------+
double newC::varSqrt(void) const
  {
   return ::MathSqrt(this.m_var);
  }
//+------------------------------------------------------------------+
 
neverness:

Bem, se não faz sentido, é uma experiência testada.

Não apenas "bobagem teórica"!!!

Exatamente.

Uso todos os tipos de arrays em indicadores com segurança. E como um amortecedor, e dinâmico, e estático.

Mas tudo não funciona para você e a experiência lhe diz, desculpe, alguns disparates.

 
Artyom Trishkin:

Este método retorna um erro? Em caso afirmativo, defina-o na seção privada. Você pode defini-la como um todo:

E você pode retirá-lo:

Ou você pode simplesmente se referir ao membro particular da classe como este.m_var dentro da classe.
 
neverness:

Bem, se não faz sentido, é uma experiência testada.

Não apenas "bobagem teórica"!!!

Ninguém está impedindo que você utilize uma matriz dinâmica em seus cálculos.

Mas!!!! O processador está ocupado durante os cálculos e não haverá escrita para a matriz dinâmica.

Assim, qualquer dado que entra em uma matriz dinâmica durante os cálculos é automaticamente ignorado. (Às vezes eles colocam proteção, e as escrevem em um buffer).

Espero que isto esteja claro...

É por isso que todos os dados em matrizes dinâmicas estão espalhados por matrizes estáticas, de modo que nenhum dado é perdido enquanto o processador trabalha.

E é por isso que todos os cálculos devem ser realizados em arrays estáticos!!!

Este é um disparate feroz, digno de entrar nos anais do fórum.

 
Artyom Trishkin:

É esse mesmo.

Utilizo facilmente qualquer tipo de arrays em indicadores. E como um amortecedor, e dinâmico, e estático.

Mas isso não funciona para você e a experiência lhe diz, desculpe, alguns disparates.

Ok.

Vamos fazer uma experiência.

Vamos pegar uma matriz dinâmica ligada aos dados do tick e usar o processador desta matriz por algumas horas.

E veja o que escrevemos para essa matriz durante esse tempo!?

Você gosta desta formulação da pergunta? (Sem um tampão, é claro).

 
neverness:

Muito bem.

Vamos fazer uma experiência.

Vamos pegar uma matriz dinâmica associada aos dados do tick e engajar o processador nessa matriz por algumas horas.

E veja o que escrevemos para essa matriz durante esse tempo!?

Você gosta desta formulação da pergunta? (Sem o tampão, é claro).

Faça-o. Em seguida, o código aqui.

 
Artyom Trishkin:

Este método retorna um erro? Em caso afirmativo, defina-o na seção privada. Você pode defini-la como um todo:

E você pode retirá-lo:

Sim, é assim que deve ser, obrigado.

 
Artyom Trishkin:

Faça-o. Em seguida, obtenha o código aqui.

É claro.

Veremos isso mais tarde.

 

Outra pergunta.

Eu tenho uma estrutura em uma classe.

Como posso devolvê-lo por solicitação a um código externo que funcione com esta classe?

 
Roman Sharanov:

Outra pergunta.

Eu tenho uma estrutura em uma classe.

Como posso devolvê-lo por solicitação a um código externo que funcione com esta classe?

apenas descrevendo a própria estrutura no nível de visibilidade variável global

então declarar a variável de estrutura na classe

e em seu código externo, você pode declarar a mesma variável, mas tenha em mente que se você declarar tal variável dentro de OnTick(), cada chamada para OnTick() iniciará um construtor de estruturas, mesmo que você não a tenha criado - em MQL, não há diferença entre classes e estruturas, a única coisa que me lembro, o construtor com o parâmetro das estruturas criadas através de novas não será passado pelo compilador

então... No OOP clássico você normalmente não vai além da classe passando os elementos internos (campos de classe), normalmente tudo é realizado através de consultas à classe Get() ... Conjunto()... bem, é uma questão de gosto

SZ: .... usar herança, os herdeiros têm classes comuns, veja o código fonte das classes da entrega MT (incluir pasta)