Erros, bugs, perguntas - página 1060

 
x100intraday:
Como vê. A falta de prazos mais elevados na minha mente equivale involuntariamente a uma suspeita"os criadores não me dizem nada... "Não é assim para outra pessoa?
E tenho a certeza que tudo "negoceia" - porque há muito poucas pessoas como você que precisam de tal truque
 
server:
Não o tenho assim! E tenho a certeza que tudo pode ser arranjado - porque há poucas pessoas como você que precisam dele.

A minha opinião: nunca se pode ter demasiados dados para análise. Mesmo para o comerciante de curto prazo, é por vezes útil saber o que está a ser feito fora dos dias de hoje. Falta de informação, especialmente não demasiado óbvia em importância, mais cedo ou mais tarde volta-se contra o comerciante.

No entanto, por vezes há demasiados cálculos contraditórios para se tomar uma decisão, pelo que parece não haver necessidade de mais dados. Mas não é uma questão de redundância de dados, mas sim de gestão correcta dos dados. Com um excesso de informação de fundo é possível fazer algo, incluindo ignorá-la, mas com uma falta de informação não se pode ir longe e na direcção certa.

 
MetaDriver:
2013.09.07 02:39:36 iTester-SL (GBPUSD,M1) 1 objecto do tipo CTestStat à esquerda
2013.09.07 02:39:36 iTester-SL (GBPUSD,M1) 1 objectos não apagados

Fuga de memória // Ou falha de compilação.

O objecto foi declarado como uma variável global estática. (!) Ou seja, não é de todo dinâmico.

O problema ocorreu após a parte do código que utiliza esta variável ter sido movida para um ficheiro .mqh e declarada neste ficheiro como externa (não foi detectada nenhuma fuga antes):

O programa funciona bem.

// Evitei o problema ao declarar a dinâmica do objecto. Agora crio-o em OnInit(), apago-o em OnDeinit(). As fugas (mensagens de fuga) pararam.

Obrigado, vamos lá ver.
 

Alguém sabe que tipo de ferramenta de comércio LUCROS é?

 
MetaDriver:

Um grande pedido aos presentes no fórum, para testar OnCalculate() para duplicar as chamadas e anular as chamadas pré_calculadas em cada tick.

E afixe aqui os seus resultados (é/não é duplicado).

Indicador de teste aqui.

Pavel Tsatsenko (kPVT) ajudou-me // Muito obrigado!

Verificou-se que este problema ocorre ao copiar pedidos ( CopyXXX(...) ) fora do intervalo do buffer a ser copiado. Em particular, no indicador, que é oferecido para testes, há uma imprecisão que resulta em solicitar mais do que tarifas_totais de barras.

A versão corrigida é anexada no reboque. Funciona no meu terminal sem duplicação de carraças em todas as configurações do terminal. Os camaradas interessados podem verificá-lo. Se alguém tiver duplicados de carrapatos, por favor assinale.

Arquivos anexados:
 
paladin800:

Alguém sabe que tipo de ferramenta de comércio LUCROS é?

o mais provável é que tenham sido as trocas que não atingiram nenhum dos símbolos, talvez uma recarga.
 

A herança de classe é um buggy. Há 3 dias que não consigo terminar uma aula porque os bugs de compilação estão a rastejar!

Aqui está o primeiro insecto:

class CAbstract
{
protected:
   int m_handle;

public:
   CAbstract() : m_handle(INVALID_HANDLE) {}
   int GetHandle() const {return(m_handle);}
};

class CMyObj : CAbstract
{
};

class CHandle : CAbstract
{
protected:
   CMyObj *m_objects[];

public:
   ~CHandle()
   {
      int x;
      // Error: 'CAbstract::GetHandle' - cannot call private member function
      for (x = ArraySize(m_objects)-1; x>-1;x--) Print(m_objects[x].GetHandle());
      
      Print(m_handle);
   }
};


E aqui está o segundo:

class CAbstract
{
protected:
   int m_handle;

public:
   CAbstract() : m_handle(INVALID_HANDLE) {}
   int GetHandle() const {return(m_handle);}
};

class CMyObj : CAbstract
{
};

class CHandle : CMyObj
{
public:
   void Log()
   {
      // Error: 'm_handle' - private member access error
      Print(m_handle);
   }
};

Bem, não há membros privados!

O número do relatório de erro é #835727.

 
Roffild:

A herança de classe é um buggy. Há 3 dias que não consigo terminar uma aula porque os bugs de compilação estão a rastejar!

Aqui está o primeiro insecto:


E aqui está o segundo:

Bem, não há membros privados!

O número do relatório de erro é #835727.

Há, no entanto. Tente desta forma:

class CAbstract
{
protected:
   int m_handle;

public:
   CAbstract() : m_handle(INVALID_HANDLE) {}
   int GetHandle() const {return(m_handle);}
};

class CMyObj : public CAbstract   // Наследование по умолчанию приватное. И в С++ и в mql
{
};

class CHandle : CAbstract
{
protected:
   CMyObj *m_objects[];

public:
   ~CHandle()
   {
      int x;
      // Error: 'CAbstract::GetHandle' - cannot call private member function
      for (x = ArraySize(m_objects)-1; x>-1;x--) Print(m_objects[x].GetHandle());
      
      Print(m_handle);
   }
};
A herança privada torna privados todos os membros de uma classe herdada.
 
MetaDriver:
 // Наследование по умолчанию приватное. И в С++ и в mql

A partir da ajuda da MQL5:

class CDerived: public CBaseClass // public наследование можно не указывать, оно по умолчанию
  {
 
Roffild:

A partir da ajuda da MQL5:

Aquele que vive de acordo com o livro morrerá de um erro tipográfico.