Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1473

 
Alexander Sevastyanov #:

Acredito que as chances de reembolso de qualquer valor nesse caso são quase nulas.
Todos aqui já responderam corretamente.

Mas ainda é melhor tentar.

Alexander, obrigado por sua ajuda. Sucesso para você na programação e na negociação. Tudo de bom para você.
 
Valeriy Yastremskiy #:

Antes de fazer qualquer coisa com seu dinheiro, faça pelo menos uma verificação mínima.

Da mesma forma.

Espero que não de crédito... Definitivamente, vá à polícia.

Obrigado a todos pelas orientações práticas e pela ajuda. Os moderadores me perdoem por violar as regras do fórum. Sou novato e não sabia que não era permitido falar sobre corretoras. Lerei cuidadosamente as regras e me comprometerei a não violá-las. Mais uma vez, agradeço a todos que responderam ao meu apelo e boa sorte.
 

Tentei fazer um análogo do comentário, mas as letras eram maiores.

Em geral, funcionou, as letras estão legíveis agora.

Mas, devido à minha ignorância em OOP, meu comentário não afeta muito bem o trabalho do computador,

Algum tempo depois de executar o Expert Advisor com um comentário em vários gráficos, algo ruim acontece, até o desaparecimento da tela e a reinicialização do servidor)))))

No terminal registra um monte desses registros.

MQL5  VirtualAlloc failed in large allocator, size=101104
MemoryException 101142 bytes not available, 0 heapmin result

Ajude aqueles que sabem como fazer, para que a memória não vaze.

O arquivo de comentários do plug-in tem a seguinte aparência:

#include <Canvas\Canvas.mqh>
void Comm(string txt, color clr = clrYellow, int FontSize = 20, string Font = "Consolas", int flag = FW_BOLD)
  {
   CCanvas canvas;

   int shift = 0;
   if(ChartGetInteger(0, CHART_SHOW_ONE_CLICK))
      shift = 60;
   canvas.Erase(0x00FFFFFF);
   canvas.FontNameSet(Font);
   canvas.FontFlagsSet(flag);
   canvas.FontSizeSet(FontSize);

   int width = 0, height = 0;
   string result[];
   int size = StringSplit(txt, StringGetCharacter("\n", 0), result);
   height = (int)(FontSize * 1.8 * size);

   for(int i = 0; i < size; i++)
     {
      int w = canvas.TextWidth(result[i]);
      if(width < w)
         width = w;
     }

   canvas.CreateBitmapLabel(0, 0, "Comment", 5, 20 + shift, width, height, COLOR_FORMAT_ARGB_NORMALIZE);
   for(int i = 0; i < size; i++)
      canvas.TextOut(0, (int)(FontSize * 0.8 * i), result[i], ColorToARGB(clr, 255));

   canvas.Update(true);
  }

Exemplo de uso assim:

#include <Comm.mqh>
//+------------------------------------------------------------------+
void OnTick()
  {
   MqlTick tick;
   SymbolInfoTick(_Symbol, tick);
   if(tick.ask != 0 && tick.bid != 0)
      Comm(StringFormat("ask = %.5f\nbid = %.5f\ntime = %s", tick.ask, tick.bid, TimeToString(tick.time, TIME_DATE | TIME_SECONDS)));
  }
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ObjectDelete(0, "Comment");
   ChartRedraw();
  }
//+------------------------------------------------------------------+


Está claro que estou fazendo algo errado com a classe CCanvas, mas o que exatamente está errado, eu não entendo.

Arquivos anexados:
Comm.mq5  2 kb
Comm.mqh  2 kb
 
Aleksandr Slavskii #:

Tentei fazer um análogo do comentário, mas as letras eram maiores.

Agora as letras estão legíveis.

Mas como não conheço OOP, meu comentário não afeta muito bem o trabalho do computador,

Algum tempo depois de executar o Expert Advisor com um comentário em vários gráficos, algo ruim acontece, até o desaparecimento da tela e a reinicialização do servidor))))))

No terminal, há vários desses registros.

Ajude quem souber como fazer, para que a memória não vaze.

O arquivo de comentários anexado tem a seguinte aparência:

Exemplo de uso assim:


Está claro que estou fazendo algo errado com a classe CCanvas, mas não entendo exatamente o que está errado.

Se estiver interessado no código sem a biblioteca CCanvas, mas com o objeto OBJ_BITMAP_LABEL, dê uma olhada no meu código ...

ClosingLots
ClosingLots
  • www.mql5.com
Индикатор информер.
 
Alexey Viktorov #:

Se você estiver interessado no código sem a biblioteca CCanvas, mas com o objeto OBJ_BITMAP_LABEL, veja meu código ...

Obrigado, boa solução, gostei.


Mas, "um samurai não tem objetivo , apenas um caminho ", a solução de como fazer um comentário é menos importante para mim do que descobrir qual é o meu erro ao usar a classe.

 
Aleksandr Slavskii #:

Obrigado, bela solução, gostei muito.


Mas, "um samurai não tem objetivo , apenas um caminho ", eu me importo menos em descobrir como fazer um comentário do que em descobrir qual foi meu erro ao usar a classe.

Quantos, em quantos BitmapLabel são criados? (Ctrl+B --> Todos).

 
Artyom Trishkin #:

Quantos e em que quantidade um BitmapLabel é criado? (Ctrl+B --> Todos).

Em um gráfico, um objeto.

E como pode haver mais de um? O nome de todos os objetos criados é o mesmo: "Comentário".


Esqueci de escrever.

O problema aparece em um servidor muito ruim com um núcleo e 1gb de memória. E não imediatamente, mas depois de algum tempo.

Mas acho que se tudo estivesse normal com o código, não haveria problema. Algo está obstruindo a RAM, mas não consigo entender o que é.

Por que é importante que eu saiba?

Você pode comprar capacidade de servidor, pode comprar memória, pode fazer upgrades infinitos, mas isso não fará com que meu código fique correto.

 
Aleksandr Slavskii #:

Em um gráfico, um objeto.

Como pode haver mais de um? O nome de todos os objetos criados é o mesmo: "Comentário".


Esqueci de escrever.

O problema aparece em um servidor muito ruim com um núcleo e 1gb de memória. E não imediatamente, mas depois de algum tempo.

Mas acho que se tudo estivesse normal com o código, não haveria problema. Algo está obstruindo a RAM, mas não consigo entender o que é.

Por que é importante que eu entenda ?

Você pode comprar mais capacidade de servidor, pode comprar mais memória, pode fazer upgrades infinitos, mas isso não fará com que meu código fique correto.

O que há no registro quando um Expert Advisor é removido do gráfico? Normalmente, ele informa quais objetos estão vazando, o que lhe dá uma direção de pesquisa

 
Artyom Trishkin #:

O que aparece no registro quando o EA é removido do gráfico? Normalmente, ele informa quais objetos estão vazando, o que lhe dá uma direção de pesquisa

Excluí os registros. Mas não há problema, não vai demorar muito para fazer isso novamente. Agora, vou iniciar o Expert Advisor no servidor e, pela manhã (talvez mais cedo), haverá os registros.

Mas, pelo que me lembro, não consegui encontrar neles uma indicação de onde está havendo vazamento de memória.

E o Expert Advisor não é removido do gráfico, provavelmente apenas reinicia o servidor, pois não há registro de fechamento do terminal nos logs. Mas isso não é certo.

 
Aleksandr Slavskii #:

Excluí os registros. Mas não há problema, não vai demorar muito para fazer isso novamente. Vou iniciar o Expert Advisor no servidor agora e terei os registros pela manhã (talvez antes).

Mas, pelo que me lembro, não consegui encontrar neles uma indicação de onde está havendo vazamento de memória.

E o Expert Advisor não é removido do gráfico, provavelmente apenas reinicia o servidor, pois não há registro de fechamento do terminal nos logs. Mas isso não é certo.

Você não entendeu o significado da minha pergunta. Você não precisa esperar o servidor quando ele ficar sem memória e estourar.

Se houver um vazamento de objeto no código, recompile-o em seu computador local quando o Expert Advisor estiver em execução - uma mensagem sobre o número e o tipo de objetos vazados deve ser exibida nos registros. Ou execute-o em um gráfico e remova-o imediatamente - uma mensagem sobre o vazamento também deverá aparecer, se houver, é claro.

Razão: