Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1185

 
odyn:

Olá Connoisseurs!

Aqui está o código :

estrutura STRUCT_POSITION

STRUCT_POSITION SPosition[];

Pergunta:

O que é STRUCT_POSITION SPosition[]; ? Se está a criar uma instância da estrutura, porque é que é uma matriz dinâmica? Será realmente possível fazer isto? Porquê?


Ficar-lhe-ei muito grato pela sua resposta.

Declarando uma estrutura STRUCT_POSITION {\i1}, isto é a criação de um tipo de dados definido pelo utilizador. E STRUCT_POSITION SPosition[]; é a declaração de uma variável do tipo de utilizador. O facto de a variável ser uma matriz é indicado por parênteses rectos [] Pode declarar várias variáveis do tipo personalizado como qualquer outro tipo.

double a, b[];

STRUCT_POSITION Pos, SPosition[];// при условии, что структура уже создана.
Neste tipo de entrada, variável,matriz
 
Bom dia para todos, hora do dia.
Num dos meus dispositivos andróides, o MT5 deixou de funcionar
Acabou de deixar de funcionar. Não alterou nada, não configurou nada.
Parece a imagem do ecrã.
Eu tenho Internet, tudo o resto funciona.
Tenho apenas uma conta de demonstração.
Desculpe se estou no lugar errado.
Arquivos anexados:
 

Existe alguma utilidade (como WatchDog) para reiniciar o MT5.


Suponhamos que o MT5 fechou devido a algum erro. Como posso rastrear isto à distância imediatamente e reiniciar o MT5.

Estou a utilizar o MT4bar para o MT4. Precisa de algo semelhante para o MT5.

 

Boa tarde.

Estou a tentar fazer uma classe base universal para definir e chamar sempre um objecto da mesma classe.

E estou a fazer duas soluções para notícias de testes. Tenho uma classe base CNewsFilter e duas herdadas CNewsFilterLive e CNewsFilterTester. Quero definir um objecto CNewsFilter no meu código. E seleccionará automaticamente uma classe dependendo do modo em que está a decorrer. Mas algo não funciona. Aqui está uma classe base, deixei apenas o método Init(), por exemplo.

//+------------------------------------------------------------------+
//| News Filter Class                                                |
//+------------------------------------------------------------------+
class CNewsFilter
  {
protected:
   //---
public:
                     CNewsFilter(void);
                    ~CNewsFilter(void);
   virtual bool      Init(string,int);
   virtual void      Deinit(void);                    
   virtual bool      CheckNews(ENUM_NEWS_TYPE &type);
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool CNewsFilter::Init(string symbol_name,int magic_number)
  {
   return true;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
#ifdef __MQL5__//MQL_TESTER || MQL_VISUAL_MODE
#include <NewsFilterTester.mqh>
#else
#include <NewsFilterLive.mqh>
#endif

Uma classe herdada:

//+------------------------------------------------------------------+
//| News Filter Class                                                |
//+------------------------------------------------------------------+
class CNewsFilterTester : public CNewsFilter
  {
protected:
public:
                     CNewsFilterTester(void);
                    ~CNewsFilterTester(void);
   virtual bool      Init(string,int);
   virtual void      Deinit(void);                    
   virtual bool      CheckNews(ENUM_NEWS_TYPE &type);
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
CNewsFilterTester::CNewsFilterTester() :  m_delimiter('\t')
  {
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
CNewsFilterTester::~CNewsFilterTester(void)
  {
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool CNewsFilterTester::Init(string symbol_name,int magic_number)
  {
   // some code
   return true;
  }

E depois chamo-lhe no meu código EA:

#include <NewsFilter.mqh>
....
CNewsFilter    news_filter;

news_filter.Init(Symbol(),MagicNumber);

Ao depurar, nunca entra numa classe herdada CNewsFilterTester, que deve entrar de acordo com a directiva da classe base, que acrescentei ao final do código da classe base. __MQL5__ está aqui apenas como um exemplo. Como fazê-lo com o provador é outra questão. Até agora, a ideia em si não funciona - os métodos da classe herdada não são chamados. Quando Init() é chamado, não vai para Init() da classe herdada - neste exemplo CNewsFilterTester. Ajuda, por favor.

#ifdef __MQL5__//MQL_TESTER || MQL_VISUAL_MODE
#include <NewsFilterTester.mqh>
#else
#include <NewsFilterLive.mqh>
#endif
 
leonerd:

Boa tarde.

Estou a tentar fazer uma classe base universal para definir e chamar sempre um objecto da mesma classe.

E estou a fazer duas soluções para notícias de testes. Tenho uma classe base CNewsFilter e duas herdadas CNewsFilterLive e CNewsFilterTester. Quero definir um objecto CNewsFilter no meu código. E seleccionará automaticamente uma classe dependendo do modo em que está a decorrer. Mas algo não funciona. Aqui está uma classe base, deixei apenas o método Init(), por exemplo.

Uma classe herdada:

E depois chamo-lhe no meu código EA:

Ao depurar, nunca entra numa classe herdada CNewsFilterTester, que deve entrar de acordo com a directiva da classe base, que acrescentei ao final do código da classe base. __MQL5__ está aqui apenas como um exemplo. Como fazê-lo com o provador é outra questão. Até agora, a ideia em si não funciona - os métodos da classe herdada não são chamados. Quando Init() é chamado, não vai para Init() da classe herdada - neste exemplo CNewsFilterTester. Por favor, ajudem.

Aqui

#include <NewsFilter.mqh>
....
CNewsFilter    news_filter;

news_filter.Init(Symbol(),MagicNumber);

cria-se um objecto de classe base. Consequentemente - tem uma classe base em todo o lado.

 

Como escrever correctamente uma condição :

como esta

if(((MASlowHandle - PBid) > 0.0002) && ((MASlowHandle - MAFastHandle) > 0.0002))

ou como este:

if((MASlowHandle - PBid) > 0.0002 && (MASlowHandle - MAFastHandle) > 0.0002)

??

 
odyn:

Como escrever correctamente uma condição :

como esta

ou como este:

??

Não importa realmente. Até se pode escrever desta forma.

if(MASlowHandle - PBid > 0.0002 && MASlowHandle - MAFastHandle > 0.0002)

As operações aritméticas têm precedência sobre as lógicas.

Mas se existem && e ||| no estado, é preferível separá-los com parênteses para facilitar a sua compreensão.

 
Alexey Viktorov:

Não se trata de uma questão de princípio. Pode mesmo colocá-lo desta forma

A prioridade da aritmética é maior do que a da lógica.

Mas se a condição tem && e |||, é preferível dividi-la por parênteses para facilitar a sua compreensão.

Obrigado pela resposta!

 

Qual é a razão pela qual não posso publicar o código?

Recebo sempre uma mensagem:

Revisão do código completada com erros:
Erros detectados durante a verificação do código Relatório de estatísticas comerciais em tempo real.
https://www.mql5.com/en/code/28074/230766

Mas não compreendo a razão do erro de publicação do código.

Por favor, responda-me sobre isto.

Qual é o problema, pelo menos deve ser realçado.

 
jaffer wilson:

Qual é a razão pela qual não posso publicar o código?

Recebo sempre uma mensagem:

Verificação do código completado com erros:
Erros detectados durante a verificação de código Relatório de Estatísticas de Comércio em Tempo Real.
https://www.mql5.com/en/code/28074/230766

Mas não compreendo a razão do erro de publicação do código.

Por favor, responda-me sobre isto.

Qual é o problema, pelo menos deve ser realçado.

Onde está a pergunta? Quais são exactamente os erros? Desculpem, todos os telepatas estão de férias.

Clique