Erros, bugs, perguntas - página 2798

 
Alexey Viktorov:

Pergunto-me se olhou para a documentação ou se apenas tirou a descrição da função do meu posto.

Suspeito que só tem objectos gráficos com tendências. Em caso afirmativo, porque é que precisa de um prefixo? Há também uma eliminação por tipo de objecto

para não ter de mudar nada no projecto, basta escrever

)))))))))))))

Naturalmente, estava a ver a documentação. E sim, tudo é possível! Mas eu fiz isto... E o quê, não funciona ou atrapalha de alguma forma...?

E, no projecto, é mais complicado do que isso. Como disse acima...
 
Artyom Trishkin:

Este é apenas um caso especial. O prefixo é geral e universal. Embora a remoção de todas as linhas de tendência também afecte objectos não pertencentes ao programa.

Concordado. chart_id: 0 (gráfico actual). Significa que apenas afectará este gráfico. E se houver outros programas, pode adicionar ID a cada nome de objecto e chamarObjectsDeleteAllcom um prefixo apropriado e a função não confundirá nada. Foi por isso que eu disse nos posts acima que a nomeação de objectos é complicada e que precisava de pensar antes de usar esta função. Mas Alexey ficou ofendido comigo, também o seu amigo. Em vão!

 
Mihail Matkovskij:

Porquê? chart_id: 0 (gráfico actual). Portanto, está apenas nesta tabela. E se houver outros programas, há também uma noção como a de identificação. Se for adicionado a cada nome de objecto, a função ObjectsDeleteAll não confundirá nada. Foi por isso que disse nos meus posts acima que a nomeação de objectos é complicada e tive de pensar bem antes de usar esta função. Mas Alexey ficou ofendido comigo, também o seu amigo. Em vão!

Use o seu cérebro antes de responder :)

O ID escrito no nome do objecto é uma espécie de prefixo, que identifica e remove objectos do programa.

Agora veja o código, que escrevi na minha resposta a Alexei, e como o seu código irá apagar apenas os objectos de que precisa, que NÃO terão identificação escrita nele, e deixará no gráfico objectos "alienígenas" que não pertencem ao programa?

A minha resposta a este código foi Alexey com uma tal mensagem de Alexey:

em conformidade, não deve alterar nada no projecto, mas apenas escrever

ObjectsDeleteAll(0, 0, OBJ_TREND);
)))))))))))))
 
Artyom Trishkin:

Use o seu cérebro antes de responder :)

ID, escrito no nome do objecto - é uma espécie de prefixo, através do qual os objectos do programa são removidos.

Agora olhe para o código, que escrevi na minha resposta a Alexei, e como o seu código irá apagar apenas os objectos de que precisa, que NÃO terá identificação escrita no mesmo, e que deixará no gráfico objectos "alienígenas" que não pertencem ao programa?

A minha resposta a Alexey foi a este código com uma tal mensagem de Alexey:

Editado. Respondeu correctamente. Fui eu quem fez asneira um pouco. Queria dizer algo mais.

 
Mihail Matkovskij:

Mas o Alexei ofendeu-se comigo...

Não percebe... Sou a favor da justiça. Não deve expor as suas falhas, e todos as têm, e eu também, para os bugs do terminal.

Há um exemplo recente: há algum tempo atrás, tive o prazer de usar um tal gimmick, clicar com o botão direito do rato numa variável, "Go to definition" e para voltar à mesma variável carreguei no botão "Back" no rato. Mas hoje reparei que já não está a funcionar. Qual é a razão? Ontem actualizei para 2530... Até usei alguma linguagem grosseira, mas de repente lembrei-me que também tive de mudar a tampa. Abri ME 2474 e oops..................... e não funciona. E se eu tivesse uma mensagem de texto na minha cabeça para escrever tudo o que pensei sobre os criadores? Que aspecto teria isso?

Não se apresse antes de escrever sobre insectos, procure falhas no seu código.

 
Alexey Viktorov:

Não... Eu sou a favor da justiça. Não exponha as suas falhas, e todos as têm e eu também as tenho, para os erros do terminal.

Quem está a expô-lo?https://www.mql5.com/ru/forum/1111/page2795#comment_17290368 . Espero que destavez o leiam com atenção...? Quantas vezes tenho de vos dizer antes de finalmenteo conseguirem meter na cabeça e deixarem de escrever disparates aqui?

 
Mihail Matkovskij:

Quem o está a colocar?https://www.mql5.com/ru/forum/1111/page2795#comment_17290368 . Espero que destavez o tenha lido com atenção...? Quantas mais vezes tenho de lhe dizer para que finalmenteo receba e não escreva disparates aqui?!

Sou a favor da justiça.

Fórum sobre comércio, sistemas automatizados de comércio e teste de estratégias comerciais

Insectos, insectos, perguntas

Mihail Matkovskij, 2020.07.11 14:47

Fiz um código fonte onde este erro ocorre:
//+------------------------------------------------------------------+
//|                                           DeleteChartObjects.mq5 |
//|                                      Copyright 2020, © Cyberdev. |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, © Cyberdev."
#property version   "1.00"
#property indicator_chart_window

#property indicator_plots 0

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

#include <ChartObjects\ChartObjectsLines.mqh>
#include <Arrays\ArrayObj.mqh>

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//--- input parameters
input int      nBars = 100000;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int customN_Bars = 0;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
CArrayObj listOfTrendLines;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit() {
//--- indicator buffers mapping
  int totalBars = iBars(NULL, PERIOD_CURRENT);
  customN_Bars = (nBars < totalBars) ? nBars : totalBars;
//---
  return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[]
) {
  CChartObjectTrend * trend;
  int delta = rates_total - customN_Bars;
  int shift;
  int i;
  for(i = 0; i < customN_Bars; i++) {
    shift = delta + customN_Bars - i - 1;
    trend = new CChartObjectTrend();
    if(trend.Create(0, "trend"+(string)i, 0, time[shift], low[shift], time[shift], high[shift]))
      listOfTrendLines.Add(trend);
  }
  return(rates_total);
}

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason) {
  
  CChartObjectTrend * trend;
  
  int i = listOfTrendLines.Total() - 1;
  for(; i >= 0; i--) {
    trend = dynamic_cast <CChartObjectTrend *> (listOfTrendLines.At(i));
    
    if(CheckPointer(trend) == POINTER_INVALID)
      continue;
    
    delete trend;
  }
}
//+------------------------------------------------------------------+

Acções para demonstrar o bug.

Atirar o indicador no gráfico.

2. Retirar o indicador do gráfico.

3. prima Ctrl+B, depois clique em "Listar tudo" na janela e veja os objectos que não foram removidos.

Objectos

Tenho até 294 de um total de 100000.

Se se reduzir o valor do parâmetro de entrada nBars, o bug não aparece.


 
Alexey Viktorov:

Sou a favor da justiça.



Então aquele post não disse qual era o bug, o meu programa ou o bug do terminal. Pensei que se tratava de um bug terminal. Mas Rashid Umarov explicou-me tudo e eu compreendi-o. Tudo era muito claro para mim. Não havia nenhum bug terminal, estava errado nas minhas suposições. Está a seguir-me com algum tipo de entusiasmo maníaco. Perguntei-lhe qual era a razão, disse-me o senhor:

Já se teriam calado há muito tempo e eu não teria continuado.

Essa é a razão...

Querem parar com este disparate! Um adulto (espero)...

 
Mihail Matkovskij:

Portanto, essa mensagem não dizia qual era o bug, o meu programa ou o bug do terminal. Pensei que se tratava de um bug terminal. Mas Rashid Umarov explicou-me tudo e eu compreendi-o. Tudo era muito claro para mim. Não havia nenhum bug terminal, estava errado nas minhas suposições. Está a seguir-me com algum tipo de entusiasmo maníaco. Perguntei-lhe qual era a razão, disse-me o senhor:

Essa é a razão...

Querem parar com este disparate! Um adulto, espero eu...

Muito bem. Num tumbleweed, mudei os meus sapatos. Reportou-o como um bug terminal e ............ vive a sua vida como a conhece.

 
Ligar o armazenamento

https://storage.mql5.io não é possível iniciar sessão.

Razão: