Erros, bugs, perguntas - página 1925

 

Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial

Insectos, insectos, perguntas

fxsaber, 2017.07.10 20:16

Para aliviar muitas questões sobre o preenchimento correcto da estrutura MqlTradeRequest, sugiro que ao premir F9 no terminal enquanto preenche manualmente os campos, faça uma nota de rodapé "Detalhes", onde todos os campos da estrutura comercial correspondente serão visíveis (com opção de cópia com um clique). Agora esta estrutura está totalmente disponível se a apanhar na OnTradeTransaction após pressionar a acção da janela F9.

Falha. A implementação da captura da estrutura preenchida através da OnTradeTransaction pode ser vista aqui.

 
Yury Kirillov:

A partir de pelo menos 1625 quedas de MT5 quando testado.

Bild 1626:

Reproduz pelo menos nos modos "cada carrapato..." e "todos os carrapatos".


Tarde. Necessidade de passos para a reprodução. Necessidade de perito/indicador e configurações de teste. Por favor, escreva para Servicedesk.

 
Alexander:

Boa tarde. Necessidade de passos para a reprodução. Necessidade de perito/indicador e configurações de teste. Por favor, escreva para Servicedesk.


Ter escrito para TA#1794147.

Crash parece ser gerado ao utilizar o HistoryDealGetTicket(i), com um parâmetro maior do que o número de transacções disponíveis.

 
Yury Kirillov:

Escrevi ao TP#1794147.

Crash parece ser gerado quando se utiliza o HistoryDealGetTicket(i), com um parâmetro que excede o número disponível de transacções.

Sim, eu vi-o. Obrigado

 

Nenhuma mensagem de erro

struct A {
        int z;
};
void OnStart()
{
        int const b; //'b' - 'const' variable must be initialized
        A   const a; //нет сообщения об ошибке //по сути равнозначно записи: int const а.z; 
}
Deve estar presente um construtor explícito ou uma sequência de inicialização
 
A100:

Nenhuma mensagem de erro

Por causa do construtor. Portanto, está tudo bem.

 
fxsaber:

Por causa do construtor. Portanto, está tudo bem.

Por causa de um construtor que nada faz?

struct A {
        A() {}
        int a;
}; 
void OnStart()
{
        const A a; //нормально
}

Se é possível não inicializar const int A::a, então porquê inicializar const int b no caso anterior?

 
A100:

Por causa de um construtor que nada faz ?

Sim, por causa do construtor por defeito vazio.

Se pode desinicializar const int A::a, então porquê inicializar const int b necessariamente no caso anterior?

Porque é que mostra Erro em vez de Aviso? Bem, pode ser feito desta forma

void OnStart()
{
  int a;
  const int b = a;
}

IMHO, deve haver um Aviso quando uma variável constante de um tipo simples não é inicializada. E não deve haver Aviso quando o valor do OrderSend não é verificado. Mas esta parece ser a opinião dos criadores sobre a correcta. Isto é, o raciocínio é subjectivo.

 
fxsaber:

Porque é que mostra Erro em vez de Aviso? Afinal de contas, pode fazê-lo desta forma

Porque a utilização de uma variável constante não inicializada não faz sentido - daí o erro (contém um valor aleatório e não pode ser alterado mais tarde)

 
A100:

Porque a utilização de variável constante não inicializada não faz sentido - daí o erro (contém um valor aleatório e a sua utilização posterior conduzirá a erros difíceis de encontrar)

Risquei uma palavra na citação, mas o significado não mudará se houver apenas operações só de leitura no futuro. Para não-constrição dá Advertência, para constância dá Erro. É apenas uma das decisões controversas dos criadores.