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

 
leonerd:

mas será possível declarar uma classe como uma classe de base e depois, dependendo das condições, anulá-la como uma das classes herdadas?

A tarefa é manter o mesmo nome de classe no código.

Além disso, aconselhar qual a directiva a utilizar para definir o provador.

É possível fazê-lo desta forma?

#include <NewsFilter.mqh>
//...
   if(MQLInfoInteger(MQL_TESTER))
      CNewsFilterTester news_filter;
   else
      CNewsFilter       news_filter;
//---
   news_filter.Init(Symbol(),MagicNumber);
 
Artyom Trishkin:

Obrigado. Sim, mas aqui o objecto news_filter revela-se indefinido. Deve ser declarado globalmente para ser acessível a partir de qualquer parte do código. O que fazer?

CNewsFilter       news_filter;
void OnInit()
  {
  }
 
leonerd:

Obrigado. Sim, mas aqui o objecto news_filter revela-se indefinido. Deve ser declarado globalmente para ser acessível a partir de qualquer parte do código. O que fazer?

Em que casos seria indefinido?

 
Artyom Trishkin:

Em que casos será indefinido?

#include <NewsFilter.mqh>

void OnInit()
  {
//...
   if(MQLInfoInteger(MQL_TESTER))
      CNewsFilterTester news_filter;
   else
      CNewsFilter       news_filter;
//---
   news_filter.Init(Symbol(),MagicNumber);
  }
void OnTick()
  {
   news_filter.Check()...
  }
 

Por favor ajudem-me a compreender a lógica por detrás da execução desta declaração e a expressão da sua condição.


CTrade         m_trade;

CPositionInfo  m_position;

if(!m_trade.PositionClose(m_position.Ticket()))

Se NÃO fechar a posição definida pelo bilhete?

Primeiro recebe um bilhete de posição -> o programa tenta fechar a posição -> o valor booleano devolvido é invertido.

Certo?

 
odyn:

Por favor ajudem-me a compreender a lógica por detrás da execução desta declaração e a expressão da sua condição.


Se NÃO fechar a posição definida pelo bilhete?

Primeiro recebe um bilhete de posição -> o programa tenta fechar a posição -> o valor booleano devolvido é invertido.

Certo?

-> Retorna verdadeiro se a posição com o bilhete especificado for fechada, caso contrário falsa

A condição diz: Se a posição com bilhete especificado não estiver fechada...

 
Сергей Таболин:

-> Devolve verdadeiro se a posição com bilhete especificado for fechada, caso contrário falsa

A condição diz: Se a posição com bilhete especificado não estiver fechada...

A questão é: o programa está ou não a tentar fechar a posição?

 
odyn:

A questão é: o programa tenta ou não encerrar a posição?

Sim, é verdade.

 
Сергей Таболин:

Sim, ele está.

Obrigado pela sua resposta

 

Explique, por favor.

A funçãoOnTradeTransaction.

Tem de ser no Consultor Especialista?

Em caso negativo, em que casos deve ser incluído no código? E porquê?

Razão: