Erros, bugs, perguntas - página 2394

 
Olá!

Dado: dois gráficos em terminal mt5,por exemplo EURUSD H1,EURUSD H1. Que os gráficos tenham os números 1 e 2, respectivamente, ao numerar da esquerda para a direita.

Se o "painel" (praticamente qualquer painel) for colocado no gráfico que tem o número 1, então, após a transição para o gráfico 2 e voltar para o gráfico 1, o painel é minimizado - minimizado para o canto superior esquerdo.

Ao mesmo tempo, se o "painel" for colocado no quadro 2, com o quadro 1 existente, claro, então após a transição para o 1 e voltar ao quadro 2, a minimização - a minimização do "painel" para o canto superior esquerdo não acontece:).

Quem pode explicar o que é a questão e como lidar com ela?

Painel-01Painel-02
Arquivos anexados:
 
SEM:

Olá!

A última versão(build 2007, 25 Fev 2019) descobriu dois bugs:

1) 1) Ao abrir o programa (ou alterar o perfil) muitos gráficos (41 no total) mostram um eterno "À espera de actualização".

2) 2) Ao fechar o programa, este não fecha completamente, o gestor de tarefas mostra que o programa não está fechado, embora visualmente já não seja exibido.

3) Bug controverso (na versão de Dezembro de 2018 tudo funcionou bem, sem erros), talvez um bug no indicador, ao iniciar o programa ou ao alterar o perfil, o indicador não é calculado correctamente, pode-se ver a partir dos dados apresentados que alguns dos dados não são calculados correctamente. Ao reaplicar um modelo ou propriedades do indicador de abertura e fecho, os dados são calculados correctamente.

4) Por alguma razão os agentes deixaram de trabalhar na nuvem após a actualização (a conta é listada). Os testes passaram 586, o tempo passou 0 horas 0 minutos.

O erro de renderização de gráficos, acontece também com os indicadores padrão, apenas o reinício do terminal e o fecho forçado através do gestor de tarefas ajuda.

O que pode ser o erro? O histórico do símbolo é carregado.

erro

 
SEM:

O erro de renderização dos gráficos, acontece com os indicadores padrão, apenas reiniciar o terminal, e o fecho forçado através do gestor de tarefas ajuda.

Qual poderá ser o erro? O histórico dos símbolos está carregado.


Principalmente nos indicadores onde trabalho com objectos (etiquetas, etc.). Pode estar ligado ao grande número de matrizes de indicadores. Em média cerca de 40 "INDICADOR_DADOS" bem como "INDICADOR_CÁLCULOS". A propósito, se a memória me serve correctamente, em tais situações, mesmo após uma compilação bem sucedida, o terminal não actualizaria os indicadores, mas não tenho a certeza disso.

O código foi optimizado para processar dados do menor número possível de arrays por unidade de tempo, com o mesmo número de arrays ou mais.

Использование аналитических объектов - Графики котировок, технический и фундаментальный анализ - MetaTrader 5
Использование аналитических объектов - Графики котировок, технический и фундаментальный анализ - MetaTrader 5
  • www.metatrader5.com
Определение трендов, построение каналов, выявление циклов и уровней поддержки/сопротивления — все эти и многие другие задачи решаются при помощи аналитических объектов. Всего в торговой платформе доступно 46 таких инструментов. Среди них имеются геометрические фигуры, различные каналы, инструменты Ганна, Фибоначчи, Эллиотта и многое другое. В...
 
Ilya Malev:

Não estou ciente de tais subtilezas, pois não estive envolvido no desenvolvimento do meu próprio TS no MT5 no passado. Como é que se tomam os mercados, quais são as novidades? Se atingirem uma lacuna devem ser executados à primeira citação, ou seja, no caso de os limites deslizarem para o lado positivo. Um corretor de qualidade pode permitir isto na conta real. Mas é claro que isto não é uma regra. Mas se o spread por barra fosse máximo, compensaria o lucro sobre os limites.

Provavelmente a forma mais rápida de verificar o deslizamento no Testador de Estratégia

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

Bibliotecas: TradePanel_Csharp

fxsaber, 2019.03.05 10:10

Demonstração

Ver coluna SlipPage

A coluna SlipPage mostra o deslizamento na abertura (por limite) e fecho (por take) em pips. Pode ver perfeitamente como o Testador em modo de carraças reais sobrestima o lucro.

 
Isto é possível em outros compiladores?
void OnInit()
{
  OnInit2(); // Пропишите внизу OnInit
}

#define OnInit OnInit2
Neste momento, o compilador dá
'OnInit2' - function not defined        Test3.mq5       3       3
1 error(s), 0 warning(s)                2       1


Gostaria que desse

'OnInit2' - function not defined        Test3.mq5       3       3 Пропишите внизу OnInit
1 error(s), 0 warning(s)                2       1
 
fxsaber:
Os outros compiladores têm esta característica?


Gostaria que produzisse

É improvável em compiladores, muito provavelmente em intérpretes. Os compiladores têm normalmente ligação estática de ponteiro para chamadas ou variáveis de função (deveria ser assim que soa?), ou seja, todos os offsets de ponteiro serão calculados no momento da compilação

No seu exemplo, tudo é à maneira antiga, #define e #ifndef ( _DEBUG ? )

 
Igor Makanu:

em compiladores improvável, em intérpretes muito provavelmente possível, os compiladores usam normalmente a ligação estática de apontadores para funcionar chamadas ou variáveis (deveria soar assim? ), ou seja, todos os offsets de apontadores serão calculados no momento da compilação

No seu exemplo, tudo é da mesma maneira antiga, #define e #ifndef ( _DEBUG ? )

Só queria que o compilador completasse a mensagem de erro com um comentário na linha.

 
Vjacheslav Lapaev:

Também a enfrentei. não posso dizer isso na versão mais recente, mas nas anteriores - com certeza. sobretudo nos indicadores, onde trabalho com objectos (etiquetas, etc.). provavelmente está ligado a um grande número de matrizes de indicadores. em média, cerca de 40, tanto "INDICADOR_DATA" como "INDICADOR_CALCULATIONS". A propósito, se a memória me serve correctamente, em tais situações, mesmo após uma compilação bem sucedida, o terminal não actualizaria os indicadores, mas não tenho a certeza disso.

O código foi optimizado para processar dados do menor número possível de arrays por unidade de tempo, com o mesmo número de arrays ou mais.

Obrigado pela dica! É uma pena, é claro, que o programa seja instável, não houve tal erro na versão de Dezembro.
 
Ilyas:

Não entrei no código apresentado, deixe-me tentar adivinhar - o problema é que ambos os EAs trabalham com o mesmo recurso gráfico.

este é um exemplo de utilização da classe padrão de biblioteca CAppDialog

se utilizar esta classe, o método Minimize() é sempre chamado quando se muda de gráfico

Não o queria compreender, apenas escrevi o meu próprio OnClickButtonMinMax(), era bastante confuso, mas funcionava sem problemas.

CAppDialog::OnClickButtonMinMax()
  {
   if(Width()<200) Minimized_state=false;
   if(Minimized_state)
     {
      Minimize();
     }
   else
     {
      Maximize();
      ObjectSet(TS1.Name()+"Label",OBJPROP_BACK,true);
      ObjectSet(TS2.Name()+"Label",OBJPROP_BACK,true);
      ObjectSet(CP.Name()+"Label",OBJPROP_BACK,true);
     }
  }

existe outro bug na classe CAppDialog, após Minimize() e Maximize() a propriedade OBJPROP_BACK da classe CCheckBox é alterada, e as caixas de verificação tornam-se com borda "quadrada", fixei rapidamente ObjectSet(TS1.Name()+"Label",OBJPROP_BACK,true) neste código; ...

 
Vjacheslav Lapaev:
Hi!

Dado: dois gráficos em terminal mt5, por exemplo EURUSD H1,EURUSD H1. Que os gráficos tenham os números 1 e 2 respectivamente, com numeração da esquerda para a direita.

Se o "painel" (praticamente qualquer) for colocado no gráfico que tem o número 1, então, após a transição para o gráfico 2 e retorno para o gráfico 1, o painel é minimizado - minimizado para o canto superior esquerdo.

Ao mesmo tempo, se o "painel" for colocado no quadro 2, com o quadro 1 existente, claro, então após a transição para o 1 e voltar ao quadro 2, a minimização - a minimização do "painel" no canto superior esquerdo não acontece :).

Quem pode explicar qual é o objectivo e como lidar com ele?

Apaguei a minha resposta anterior

A janela colapsa porque não cabe na tabela.
Se sair do modo "gráfico para toda a janela terminal", verá o tamanho real dos gráficos.

A fim de evitar que a janela do gráfico caia sobre o gráfico, é necessário aumentar o tamanho dos gráficos.
Depois disso, pode expandir o gráfico para todo o terminal e tentar alternar entre eles