Erros, bugs, perguntas - página 978

 
voix_kas:

Para melhorar a pureza da programação, gostaria de perguntar ao público sobre isto.

Suponha-se que existe uma bandeira (bool Flag) declarada globalmente. Quando certos eventos/condições ocorrem, deve ser definido para um determinado valor.

A primeira variante:

Segunda opção:

Qual a opção:

1. mais rápido em termos de desempenho?

2. Se me é permitido dizê-lo, "mais profissional"?

Esta secção do código deve ser controlada com bastante frequência, por exemplo, cada sinal sonoro.

E, na sua opinião, cada carrapato é frequentemente?

Existem cerca de 3-5 milhões de comparações deste tipo num só tick; o CPU nem sequer notará as suas condições.

Mas se vai comparar vários milhares por tick, então vale a pena optimizar.

Em geral, existe um perfilador para efeitos de optimização da velocidade.

 

Perguntas 1 e 2 sobre a condição como a seguir:

if (A==1 || B==2 || C==3)
{  // некие действия
}

1) Se a condição A===1 for verdadeira, as condições B e C serão verificadas a seguir? Ou sem verificar B e C "algum tipo de acção" é feito.

2) O cheque vai da esquerda para a direita (A, B, C) ou vice versa (C, B, A)?

3) Como pode o código ser perfilado nos fins-de-semana, quando não há carraças?

 
paladin800:

Perguntas 1 e 2 sobre a condição como a seguir:

1) Se a condição A===1 for verdadeira, as condições B e C serão verificadas a seguir? Ou sem verificar B e C "algum tipo de acção" é feito.

2) O cheque vai da esquerda para a direita (A, B, C) ou vice versa (C, B, A)?

3) Como posso tentar o código num fim-de-semana, quando não há carraças?

1. se a primeira condição for verdadeira, então as seguintes não serão verificadas. é uma condição "ou".

2. da esquerda para a direita

3. estimular através da definição do temporizador, por exemplo

 

Ou os meus esquis não estão a funcionar, ou a culpa é minha.

void OnStart()
  {
   int intDATA[];ArrayResize(intDATA,10);ArrayInitialize(intDATA,0);
   Print(string(sizeof(intDATA)));

   int doubleDATA[];ArrayResize(doubleDATA,10);ArrayInitialize(doubleDATA,0.0);
   Print(string(sizeof(doubleDATA)));

   int intD=0;
   Print(string(sizeof(intD)));

   double doubleD=0.0;
   Print(string(sizeof(doubleD)));
  }

2013.04.29 15:28:17    Size (EURUSD,D1)    8   //верно
2013.04.29 15:28:17    Size (EURUSD,D1)    4   //верно
2013.04.29 15:28:17    Size (EURUSD,D1)    52 //должно быть 8*10=80?
2013.04.29 15:28:17    Size (EURUSD,D1)    52 //должно быть 4*10=40?

 
joo:

Ou os meus esquis não estão a funcionar, ou a culpa é minha.

O tamanho de uma matriz dá o tamanho de um bloco descritivo da matriz, não o tamanho da matriz. Para obter o tamanho da matriz, deve fazer sizeof(element)*ArraySize()
Документация по MQL5: Операции с массивами / ArraySize
Документация по MQL5: Операции с массивами / ArraySize
  • www.mql5.com
Операции с массивами / ArraySize - Документация по MQL5
 
Renat:
O tamanho de uma matriz dá o tamanho do bloco descritivo da matriz, não o tamanho da matriz. Para obter o tamanho de uma matriz, faça sizeof(element)*ArraySize()
Obrigado.
 
Socorro! O quadro e as estatísticas já não são apresentadoshttps://www.mql5.com/ru/signals/5894
 
necroslav:
Socorro! O quadro e as estatísticas já não são apresentadoshttps://www.mql5.com/ru/signals/5894
O corretor limpou o histórico comercial por alguma razão. Tem de lhe fazer perguntas.
 
Rosh:
Por alguma razão, o corretor limpou o histórico comercial. Tem de lhe fazer perguntas.

no próprio terminal, ainda tenho a história. Certamente o problema é com o corretor?

p.s. Está de volta... estranho

 
Olá, o separador dos sinais em MT4 desapareceu, estava lá de manhã, chegou à noite e desapareceu. E agora que o pedido não é executado, o que devo fazer?
Razão: