Erros, bugs, perguntas - página 2747

 

Boa tarde, o registo MT5 mostra esta mensagem: 2020.05.21 05:49:44.364 Alojamento Virtual não conseguiu obter a lista de anfitriões virtuais (www.mql5.com:443 enviar pedido falhou [12002])

Podem, por favor, dizer-me o que significa e o que fazer a esse respeito?

Obrigado!

 
fxsaber:
time of [Bench1()] = 1483377
100000000
time of [Bench2()] = 1725035
100000000
time of [Bench1()] = 1523441
100000000
time of [Bench2()] = 1712777
100000000
time of [Bench1()] = 1416779
100000000
time of [Bench2()] = 1452093
100000000
time of [Bench1()] = 1399366
100000000
time of [Bench2()] = 1449939
 
Mihail Matkovskij:

O meu depurador recusa-se a trabalhar num dos meus projectos. Além disso, o seu comportamento é difícil de prever. Por vezes apenas se recusa a entrar nos pontos de pausa. Recusa-se também a entrar em algumas funções. No início pensei que a razão era a actualização (talvez algo tenha corrido mal com a depuração). Mas em outros programas mais simples tudo parece funcionar. No entanto, não o verifiquei muito, porque estou a trabalhar no meu projecto principal. É bastante complexo e inclui apenas 15 módulos da minha própria concepção (não contei o número de módulos padrão). O módulo principal contém até 2000 linhas. Pensei que talvez seja tudo sobre a complexidade do projecto. Além disso, em alguns lugares, utilizo macros para trechos repetitivos de código. Também utilizo elementos padrão da IU, tais como CAppDialog, CCheckGroup, CComboBox, CButton, etc. que reescrevi para a funcionalidade do meu programa. Talvez a depuração não funcione por causa deles... Por exemplo, o método CCheckGroup::itemCheckState(const string item) que escrevi especificamente não depura. O método encontra o item da caixa de verificação e verifica se está seleccionado (o seu Estado):

Este foi o tipo de IU com que acabei por ficar:

Alguns dos elementos da IU são classificados temporariamente. E aqui está um ramo onde descrevi como eu superei os métodos Show() e Hide() do elemento CAppDialog:https://www.mql5.com/ru/forum/338301 O compilador queixou-se nesse momento e ocorreu um erro crítico.

No final, o projecto compila normalmente, o compilador não gera quaisquer erros. Mas a depuração falha e simplesmente não mostra a execução de alguns fragmentos de código, funções, métodos e assim por diante.

Tanto quanto sei, pode haver várias razões para isso.

  1. Código complicado do projecto, utilização de macros
  2. Código complicado utilizando elementos padrão da IU, tais como CAppDialog, CCheckGroup, CComboBox, CButton (para o qual também escrevi novos métodos e redefini alguns dos já existentes)
  3. Bugs de depuração relacionados com a nova construção (possível, improvável).

Informação sobre a construção e o sistema:

Quem tem tido problemas semelhantes com o depurador e qual poderá ser a causa?

https://www.mql5.com/ru/forum/1111/page2746#comment_16481481

No CCheckGroup::itemCheckState method (no qual o depurador não consegue obter) coloquei algo como isto:

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CCheckGroup::itemCheckState(const string item) {
  int total = m_strings.Total();
  
  if(total != m_states.Total())
    return -1;
    
  int i = 0;
  for(; i < total; i++) {
    if(m_strings.At(i) == item) {
      Alert(__FUNCTION__ + " item: " + item  + " state: " + (string)m_states.At(i));
      return m_states.At(i);
    }
  }
  
  return -1;
}

E recebi a seguinte mensagem:

2020.05.21 13:20:44.229 CCheckGroup::itemCheckState item: 39 state: 32

Afinal, o método funciona bem, mas o depurador deixa de o ver por alguma razão. Sem o trabalho adequado do depurador, o trabalho no projecto pode ser atrasado por um longo período de tempo. Gostaria que os Desenvolvedores prestassem atenção a este bug, muito provavelmente relacionado com o depurador.
Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2020.05.21
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 
Mihail Matkovskij:

https://www.mql5.com/ru/forum/1111/page2746#comment_16481481

Acontece que o método funciona correctamente, mas o depurador deixa de o ver por alguma razão.
Sem o depurador a funcionar correctamente, o projecto pode ser atrasado por um longo período de tempo. Gostaria que os Desenvolvedores prestassem atenção a este bug muito provavelmente relacionado com o depurador.

É muito texto, ainda não o li todo.
Mas se algo funcionar em versão debug e não funcionar em versão debug, ou vice-versa, verificar se todas as variáveis e campos, especialmente em classe/estrutura, foram inicializados.

 
Mihail Matkovskij:
talvez o método esteja em linha, então não é um problema do depurador, mas do compilador do modo de depuração
 
TheXpert:
input int Range = 0;

double Res = 0;

#define  GETCURRENTTICK GetCurrentTick1(Tick)
//#define GETCURRENTTICK GetCurrentTick2(Tick, !i)
//#define GETCURRENTTICK GetCurrentTick3(Tick)

void OnTick()
{
  MqlTick Tick;
    
  for (int i = 0; i < 100; i++)
    if (GETCURRENTTICK)
      Res += Tick.bid;
}

double OnTester()
{
  return(Res);
}

bool GetCurrentTick1( MqlTick &Tick )
{
  return(SymbolInfoTick(_Symbol, Tick));
}

bool GetCurrentTick2( MqlTick &Tick, const bool NewTick = false )
{
  static MqlTick CurrentTick;
  
  if (NewTick)
    SymbolInfoTick(_Symbol, CurrentTick);
  
  Tick = CurrentTick;
  
  return(true);
}

bool GetCurrentTick3( MqlTick &Tick )
{
  static MqlTick _Tick; // Аналог Bid в MT4
  
  _Tick.bid += _Point;  // Хоть какой-то расход вычислительный ресурсов.
  
  Tick = _Tick;
  
  return(true);
}
#define  GETCURRENTTICK GetCurrentTick1(Tick)
#define  GETCURRENTTICK GetCurrentTick2(Tick, !i)
#define  GETCURRENTTICK GetCurrentTick3(Tick)
2020.05.21 14:19:52.450 Core 1  pass 0 returned result 693275970.165784 in 0:00:08.925
2020.05.21 14:19:59.980 Core 1  pass 1 returned result 693275970.165784 in 0:00:07.529
2020.05.21 14:20:07.370 Core 1  pass 2 returned result 693275970.165784 in 0:00:07.390
2020.05.21 14:20:14.694 Core 1  pass 3 returned result 693275970.165784 in 0:00:07.323
2020.05.21 14:20:21.688 Core 1  pass 4 returned result 693275970.165784 in 0:00:06.994
2020.05.21 14:20:29.114 Core 1  pass 5 returned result 693275970.165784 in 0:00:07.425
2020.05.21 14:20:36.133 Core 1  pass 6 returned result 693275970.165784 in 0:00:07.019
2020.05.21 14:20:43.557 Core 1  pass 7 returned result 693275970.165784 in 0:00:07.424
2020.05.21 14:20:49.580 Core 1  pass 8 returned result 693275970.165784 in 0:00:06.022
2020.05.21 14:20:57.273 Core 1  pass 9 returned result 693275970.165784 in 0:00:07.693
2020.05.21 14:21:03.993 Core 1  pass 10 returned result 693275970.165784 in 0:00:06.719
2020.05.21 14:21:03.993 Tester  optimization finished, total passes 11
2020.05.21 14:21:04.003 Statistics      optimization done in 1 minutes 22 seconds
2020.05.21 14:21:04.003 Statistics      shortest pass 0:00:06.022, longest pass 0:00:08.925, average pass 0:00:07.314
2020.05.21 14:21:04.003 Statistics      local 11 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
2020.05.21 14:21:49.346 Core 1  pass 0 returned result 693275970.165784 in 0:00:03.050
2020.05.21 14:21:51.108 Core 1  pass 1 returned result 693275970.165784 in 0:00:01.761
2020.05.21 14:21:52.903 Core 1  pass 2 returned result 693275970.165784 in 0:00:01.795
2020.05.21 14:21:54.731 Core 1  pass 3 returned result 693275970.165784 in 0:00:01.827
2020.05.21 14:21:56.536 Core 1  pass 4 returned result 693275970.165784 in 0:00:01.803
2020.05.21 14:21:58.341 Core 1  pass 5 returned result 693275970.165784 in 0:00:01.805
2020.05.21 14:22:00.135 Core 1  pass 6 returned result 693275970.165784 in 0:00:01.793
2020.05.21 14:22:01.912 Core 1  pass 7 returned result 693275970.165784 in 0:00:01.777
2020.05.21 14:22:03.663 Core 1  pass 8 returned result 693275970.165784 in 0:00:01.750
2020.05.21 14:22:05.458 Core 1  pass 9 returned result 693275970.165784 in 0:00:01.794
2020.05.21 14:22:07.274 Core 1  pass 10 returned result 693275970.165784 in 0:00:01.815
2020.05.21 14:22:07.274 Tester  optimization finished, total passes 11
2020.05.21 14:22:07.284 Statistics      optimization done in 0 minutes 21 seconds
2020.05.21 14:22:07.284 Statistics      shortest pass 0:00:01.750, longest pass 0:00:03.050, average pass 0:00:01.906
2020.05.21 14:22:07.284 Statistics      local 11 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
2020.05.21 14:23:00.873 Core 1  pass 0 returned result 661757660284.981689 in 0:00:02.859
2020.05.21 14:23:02.704 Core 1  pass 1 returned result 661757660284.981689 in 0:00:01.830
2020.05.21 14:23:04.488 Core 1  pass 2 returned result 661757660284.981689 in 0:00:01.783
2020.05.21 14:23:06.227 Core 1  pass 3 returned result 661757660284.981689 in 0:00:01.737
2020.05.21 14:23:07.778 Core 1  pass 4 returned result 661757660284.981689 in 0:00:01.550
2020.05.21 14:23:09.517 Core 1  pass 5 returned result 661757660284.981689 in 0:00:01.738
2020.05.21 14:23:11.288 Core 1  pass 6 returned result 661757660284.981689 in 0:00:01.771
2020.05.21 14:23:12.997 Core 1  pass 7 returned result 661757660284.981689 in 0:00:01.708
2020.05.21 14:23:14.815 Core 1  pass 8 returned result 661757660284.981689 in 0:00:01.817
2020.05.21 14:23:16.621 Core 1  pass 9 returned result 661757660284.981689 in 0:00:01.805
2020.05.21 14:23:18.313 Core 1  pass 10 returned result 661757660284.981689 in 0:00:01.691
2020.05.21 14:23:18.313 Tester  optimization finished, total passes 11
2020.05.21 14:23:18.323 Statistics      optimization done in 0 minutes 21 seconds
2020.05.21 14:23:18.323 Statistics      shortest pass 0:00:01.550, longest pass 0:00:02.859, average pass 0:00:01.844
2020.05.21 14:23:18.323 Statistics      local 11 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

Sobre o tema de as funções SymbolInfo serem livres.

 
TheXpert:
talvez o método esteja em linha, então o problema não é do depurador, mas do compilador para o modo de depuração

Exactamente, o projecto acabou por transbordar com macros, tanto meus como dos módulos padrão. Talvez seja por isso que o depurador nem sempre consegue fazer corresponder os comandos no ficheiro de depuração *.ex5 com linhas no ficheiro fonte *.mq5 e outros módulos...

 
fxsaber:
As funções SymbolInfo são gratuitas.

por isso é o custo da função em si, não o custo de passar o fio por valor, não por referência!

A sua versão com a cache é uma solução e tanto, se a execução desta função demorar uma percentagem significativa do tempo de execução da EA (o que eu não acredito realmente)

 
Mihail Matkovskij:

Exactamente, o projecto acabou por transbordar com macros, tanto meus como dos módulos padrão. Talvez seja por isso que o depurador nem sempre consegue fazer corresponder os comandos no ficheiro de depuração *.ex5 com linhas no ficheiro fonte *.mq5 e outros módulos...

talvez a sua estrutura de ficheiros seja tão complexa que o depurador não possa associar um ponto de ruptura, então o problema é do depurador.
 
TheXpert:

é o custo da função em si, não o custo de passar o fio por valor, não por referência!

Foi a isso que fui inicialmente levado.

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

Erros, bugs, perguntas

fxsaber, 2020.05.20 13:24

É melhor ter

const MqlTick _Tick; // Текущий _Symbol-тик.

No optimizador, estas funções são chamadas dezenas de milhares de milhões de vezes.


Além disso, a sua variante com a cache é uma solução e tanto, se a execução desta função levar uma percentagem significativa do tempo de execução de uma EA (o que eu não acredito realmente)

Numa determinada fase, não só a parte relativa do tempo tomado torna-se importante, mas também a parte absoluta.