Características da linguagem mql5, subtilezas e técnicas - página 39

 
Vasiliy Sokolov:
Não houve nenhuma menção à substituição completa da fundição.
Sim, eles cortam as possibilidades.
 
Vasiliy Sokolov:

Fundição arbitrária através de escrita/leitura binária... Luzes apagadas. Não há necessidade de ler mais...

Tem uma sugestão melhor?
 
Vasiliy Sokolov:

p.s. Eu olhei para o teu código:

Fundição arbitrária através de escrita/leitura binária... Luzes apagadas. Não leia mais...

Há fundição arbitrária via união - quaisquer estruturas simples sem construtores e operadores de cópia personalizados. Para todos os artigos deste recurso, esta peça fundida funcionará.

template <typename T>
class CASTING
{
public:
  template <typename T1>
  static const T Casting( const T1 &Value )
  {
    union CAST
    {
      T1 Value1;
      const T Value2;

      CAST( const T1 &Value)
      {
        this.Value1 = Value; // кастомный оператор может все испортить
      }
    };

    const CAST Union(Value);

    return(Union.Value2);
  }
};

#define _C(A, B) CASTING<A>::Casting(B)

void OnStart()
{
  MqlTick Tick = {0};
  
  Tick = _C(MqlTick, Tick); // Tick = (MqlTick)Tick;
}

Mas se você quiser cobrir 100% da fundição - através de arquivos. Há uma escolha.

 
Combinador:
Tens uma sugestão melhor?
Obviamente, não utilize construtores personalizados em estruturas e operadores de atribuição. Escreva um código simples.
 
Vasiliy Sokolov:
Obviamente, não utilize construtores personalizados em estruturas e operadores de atribuição. Escreva um código simples.
Então você não deve usar campos constantes de estruturas.
 

É um teste popular.

if (ArrayResize(Array, NewSize) == NewSize)
// ....

não é de modo algum o mesmo que

if (ArrayResize(Array, NewSize) == ArraySize(Array))
// ....
 

Na verdade, o ArrayResize() retorna

Valor de retorno

Se bem sucedida, a função retorna o número de todos os elementos contidos no array após o redimensionamento; caso contrário, retorna -1 e o array não é redimensionado.


 
Roffild:

Na verdade, o ArrayResize() retorna

O comportamento foi alterado há um ano. Esclarecido na Ajuda esta semana.
 
CopyTicks assíncrono apenas em indicadores

Agora temos apenas um pedido de indicadores e falha com os dados que temos. E a paginação funciona por si mesma.

Especialistas e roteiros têm uma abordagem um pouco diferente. Lá, várias tentativas são feitas para esperar pelos dados necessários. Enquanto os dados estiverem a chegar, são feitas tentativas. Assim que houver problemas com a ligação, largamo-la imediatamente.

 

Fórum sobre negociação, sistemas de negociação automatizados e testes de estratégia de negociação

Inscrições para o Campeonato de MetaQuotes-Demo em Maio

Vladimir Karputov, 2017.05.05 11:54

Adicionado. Sim, eu preciso de percorrer toda a base de sinal no terminal:

SignalBaseTotal

Devolve a quantidade total de sinais disponíveis no terminal


A propósito, eu recomendo antes desta execução (especialmente ao trocar de outro servidor ou logo após o início) que clique pelo menos uma vez na aba "Sinais" do terminal - isto deve ativar a paginação da base de dados real.