Erros, bugs, perguntas - página 2612

 
Vladimir Simakov:
Está completamente congelado, ou o EA é descarregado após algum tempo? Se for este último, está à procura de um loop.

Mais interessante. Não fica pendurado em modo de depuração. Mas no modo completo, ele cola.

 
Olá colegas, alguém sabe porque é que o terminal MT4 sobre andróide não conta com algumas posições fechadas em lucro, apesar de serem exibidas na história?

Talvez seja um insecto?
 
fxsaber:

Mais interessante. Não fica pendurado em modo de depuração. Mas no modo completo, está congelado.

Localizei o problema.

#include <WinAPI\WinAPI.mqh>

#define  GA_ROOT           0x00000002

void OnDeinit( const int )
{
  static const int ControlID[] = {0xE81E, 0x804E, 0x2712, 0x4196};
  
  long Handle = user32::GetAncestor(::ChartGetInteger(0, CHART_WINDOW_HANDLE), GA_ROOT);
                                                                                        
  for (int i = 0; i < sizeof(ControlID) / sizeof(int); i++)                             
    Handle = user32::GetDlgItem(Handle, ControlID[i]);

  ushort Str[6];
  user32::GetWindowTextW(Handle, Str, sizeof(Str) / sizeof(ushort)); // Freeze
}


Este Expert Advisor é executado num gráfico e depois desmontado à mão. O Terminal será pendurado.

A execução deste mesmo código em qualquer outro On-function não será pendurada.

 
De repente há uma pasta na pasta do Testador para um terceiro agente (porto 3002), que nunca existiu antes. Não mudei nada, e não comecei o gerente. As pastas dos outros dois agentes (normais) também têm ficheiros frescos de hoje. O que pode ser? Posso matar o extra?
 
Stanislav Korotky:
Posso pregar o extra?

Podia-se matar toda a pasta do Testador, deixando apenas a cache.

 

Pode dizer-me se se trata ou não de um insecto?

struct A { int i; };

struct B : public A { int j; };

void OnStart()
{
  B b;
  
  DebugBreak();
}

Falta o campo i.

 

Há um problema constante com o terminal:

1- Ligamos os painéis de desenho e de calendário. Coloque-as em linha com a principal.

2 - comprimir o terminal para metade do ecrã

3- abrir o terminal ao ecrã inteiro e as barras de desenho e de tempo aparecem como uma "segunda linha"! Assim, um grande espaço do ecrã é ocupado por um vazio inútil!

Mas o terminal deve ser capaz de se lembrar das suas posições e restaurá-las.

Além disso, se tomar o primeiro, não serão precisos 2 de uma só vez, o que se espera, mas apenas um... Por isso, basta arrastá-los um a um para trás!

E em geral - são tão grandes, que se tem de reduzir para metade / triplicar tudo lá!

E seria melhor tornar os caixilhos das janelas dos gráficos mais finos também! Agora são tão convencionais - todos feitos de tijolos...

É apenas ergonomia, é uma impressão geral e conveniência geral!

Há sempre problemas com a ergonomia no nosso país! É constantemente negligenciada. Os produtos estrangeiros ganham normalmente neste sentido. Não estou a falar de terminais de outros fabricantes, quero dizer em geral! Pode levar a indústria automóvel ou a electrónica... Qualquer coisa... Tem sido assim desde os dias da URSS e da economia planificada.

Seria bom finalmente vencer esta coisa!

 
Михаил:

E de qualquer forma - eles são tão grandes, que precisam de reduzir para metade / triplicar tudo lá!

Não tem de pensar nas pessoas que não conseguem ver a cem por cento? Já podem ser desmantelados? Não seria mais fácil para si usar óculos para que os botões não pareçam tão grandes?

 
Alexey Viktorov:

Não tem de pensar nas pessoas que não conseguem ver a cem por cento? Já podem ser desmantelados? Não seria mais fácil para si usar óculos para que os botões não pareçam tão grandes?

Precisa de um ajuste... Compreendo que existem diferentes tipos de visão. O ecrã pode ser grande ou o portátil pode ser pequeno. É por isso que precisa de um ajuste! E para que o terminal não esqueça a posição dos elementos.

As pessoas estão a mudar gradualmente de monitores para aparelhos de TV, em vez de monitores. É muito conveniente. Numa televisão, os grandes controlos são um desperdício de espaço. Num portátil, é conveniente ter controlos maiores... Precisa de opções.

A plataforma já não é pequena. Tantas coisas complicadas e sérias têm sido feitas. E o desenho em muitos aspectos é antigo, não mudou há muito tempo...

 

Pergunta sobre GetMicrosecondCount()

A função GetMicrosecondCount() retorna o número de microssegundos que passaram desde que o programa MQL5 começou a funcionar.

Compreendo correctamente que esta função congela quando me é pedido para Fechar - Abrir - Modificar Ordem - Posição?


Método de verificação

Abertura de 20 posições

Modificação de 20 posições

Medição GetMicrosecondCount()

Encerramento de 20 posições

GetMicrosecondCount() medição


Como resultado, todas as posições são fechadas a intervalos de 70 000 microssegundos. Todos os 20, mas se olharmos visualmente no terminal, podemos ver que algumas posições estão à espera de serem fechadas durante 2-5 segundos!

Razão: