Erros, bugs, perguntas - página 758

 
Sim, agora eles estão quatro segundos à frente.
 
Porque é que o ponto médio desaparece quando a linha de tendência muda de posição?
 

Olá!

Preciso de ver graficamente como o valor de uma determinada variável muda em cada barra durante um teste visual, ou seja, preciso de construir um gráfico separado numa sub-janela. Por exemplo, quero ver um gráfico de alterações de equidade em cada barra numa janela separada abaixo do gráfico.

O que devo fazer? Devo escrever um indicador, anexá-lo ao gráfico e passar-lhe os valores das variáveis da EA através de variáveis globais do terminal? Ou há uma forma "melhor"?

Obrigado de antemão.

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

Olá!

Preciso de ver graficamente como o valor de uma determinada variável muda em cada barra durante um teste visual, ou seja, preciso de construir um gráfico separado numa sub-janela. Por exemplo, quero ver um gráfico de alterações de equidade em cada barra numa janela separada abaixo do gráfico.

O que devo fazer? Devo escrever um indicador, anexá-lo ao gráfico e passar-lhe os valores das variáveis da EA através de variáveis globais do terminal? Ou há uma forma "melhor"?

Obrigado de antemão.

De modo algum, é possível obter valores de equidade ou equilíbrio directamente no indicador.

Definir os parâmetros do desenho tampão do indicador como um gráfico de barras.

E escrever os quatro valores nos amortecedores apropriados,

Aberto na abertura do bar, alto baixo e dinâmico (o último bar).

parece ser o seguinte: no anexo

É claro que também se pode usar valor absoluto (opção recomendada), mas penso que não mostrará pequenos incrementos iniciais, por isso penso que a diferença entre o valor inicial e o actual é melhor.

ZS, mas não, a escala é dinâmica para que se possa fazer a segunda opção, é bastante legível.

Arquivos anexados:
 
Urain:

De modo algum, é possível obter os valores de equidade ou equilíbrio directamente no indicador.

Definir os parâmetros para desenhar o tampão indicador como um gráfico de barras.

e escrever os quatro valores nos amortecedores correspondentes,

abrir em bar aberto, alto baixo e fechar dinamicamente (último bar).

Valores de equidade e equilíbrio - sim, mas e se eu quiser ver o valor de uma variável calculado na EA?
 
Alex5757000:
Valores de equidade e equilíbrio - sim, mas e se eu quiser ver o valor de uma variável calculado numa EA?

Pode fazê-lo através de evento personalizado, apenas não se esqueça de actualizar o gráfico após o evento,

porque o tick vem antes do evento ser processado, por ordem de prioridade.

Mas é possível fazê-lo com globais, mas há o mesmo problema - o tick já chegou e a variável ainda está a ser processada na EA (as suas alterações estão a ser preparadas), claro, os dados serão recebidos, mas haverá um atraso num tick, é ainda mais correcto no caso, há um lugar para colocar o gráfico actualizado após o facto, quando já se sabe com certeza que a variável tem os dados reais.

 

Este código não compila com o erro "'return' - a estrutura tem objectos e não pode ser copiada" devido à paragem"CTest getCopy(void) {CTest res; return res;}".

Isto pode ser fixado de 2 maneiras:

1) mudar"classe" para"estrutura"

2) descomentar o stopka com um operador de afectação sobrecarregado.

Então deve ser para que o papel de construtor de cópias seja desempenhado por um operador de tarefas sobrecarregado? Por que razão então não é mencionado no livro de referência, excepto por um exemplo de uma classe matricial (análise detalhada da qual, a propósito, me permitiu encontrar o erro no meu 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 não compila com o erro "'return' - estrutura tem objectos e não pode ser copiado" devido à paragem"CTest getCopy(void) {CTest res; return res;}".

É claro que um objecto não pode ser devolvido das funções.(Ao contrário das estruturas.) Está documentado.


Isto pode ser fixado de 2 maneiras:

1) mudar"classe" para"estrutura"

Ver acima.

2) descomentar o stopka com um operador de afectação sobrecarregado.

Naturalmente, o operador sobrecarregado devolve um ponteiro de punho, o que é normal. Agora não é o objecto retornado da função getCopy() mas sim o ponteiro (o retorno da função é uma atribuição implícita) que torna o código correcto.

// Apenas sintacticamente correcto.

// O retorno de uma variável não-inicializada da função getCopy(), espero, serve apenas para demonstrar o problema de sintaxe e não pretende ser razoável.

Então deve ser para que o papel de construtor de cópias seja desempenhado por um operador de tarefas sobrecarregado?

Um... O que têm os papéis a ver com isso? Pode sobrecarregar o operador da atribuição da forma que quiser e escrever correctamente o construtor da cópia. O erro no seu caso reside noutro lugar.


Porque não é mencionado no livro de referência, excepto por um exemplo de uma classe matricial (a sua análise detalhada, a propósito, ajudou-me a encontrar o erro no meu código)?

Porque a 11 de Fevereiro de 2096785 a.C., o dinossauro Vasya pisou descuidadamente o lagarto Clava. Causou uma longa cadeia de causas e consequências, o que levou à situação actual.

;)

 
MetaDriver:// O retorno de uma variável não-inicializada da função getCopy(), esperemos, serve apenas para demonstrar o problema de sintaxe, e não pretende ser razoável.

Porque deve ser rubricado? É um exemplo de uma classe que tem um construtor precisamente para esse fim.

MetaDriver:
Um... O que têm os papéis a ver com isto? Pode sobrecarregar o operador da atribuição da forma que quiser e escrever correctamente o construtor da cópia. O seu erro está noutro lugar completamente.

E depois como escrever um construtor de cópias correcto para este fim?