Indicador de médias móveis lento - página 2

 
Eduardo Fernando Teixeira:


Bom dia Eduardo,

tente usar somente um handle no lugar de 6! 

   int handle= iCustom(Symbol(),Period(),"Institucionais.exe5");
   m1 = iMA(Symbol(),Period(),Periodo1,0,MODE_SMA,handle);
   m2 = iMA(Symbol(),Period(),Periodo2,0,MODE_SMA,handle);
   m3 = iMA(Symbol(),Period(),Periodo3,0,MODE_SMA,handle);
   m4 = iMA(Symbol(),Period(),Periodo4,0,MODE_SMA,handle);
   m5 = iMA(Symbol(),Period(),Periodo5,0,MODE_SMA,handle);
   m6 = iMA(Symbol(),Period(),Periodo6,0,MODE_SMA,hendle);

Por favor, compartilhe o resultado fiquei curioso.

 
Rogerio Giannetti Torres:

Bom dia Eduardo,

tente usar somente um handle no lugar de 6! 

Por favor, compartilhe o resultado fiquei curioso.

Já tentei porém sem sucesso. Contínua lento. Demorando mais de 10 Minutos para carregar o histórico
 
Sidnei Da Silva Santos Junior:
Já tentei porém sem sucesso. Contínua lento. Demorando mais de 10 Minutos para carregar o histórico

Por que não tenta calcular as médias dentro do próprio indicador? Daí vc pode chamar pelo iCustom uma única vez com 6 buffers de médias.

 
Meu palpite é este excesso de indicadores que deixam o MT lento. Se fossem apenas as médias móveis acredito que seria mais rápido, pois o código delas é muito bem escrito e leve, mas o problema pode vir realmente do seu iCustom, pois você está calculando um indicador a partir de outro. Se for isso infelizmente não tem muito o que fazer, o processo será lento mesmo.

O problema parece estar no indicador "Institucionais.ex5", a função iCustom é otimizada e há alguns tópicos que discutem o seu desempenho. Logicamente que se o o indicador personalizado não for otimizado não vai ficar bom.


Você tem que entender que o MQL é uma tecnolgia um tanto arcaica para os dias de hoje. É simples de usar e eficiente em muitas situações, mas de repente utilizar outra plataforma com alguma linguagem mais avançada possa resolver seu problema.

O que vc chama de arcaica? Qual ferramenta e linguagem vc julga melhor? pensando em mercado nacional e forex? Logicamente que existem coisas a serem melhoradas, mas me espanta e muito uma pessoa que vende produtos de uma certa tecnologia falar para outro usuário simplesmente migrar de plataforma/linguagem.


Sidnei Da Silva Santos Junior  tente gerar um code profiler do indicador  "Institucionais.ex5" e tente identificar o gargalo. Se não souber o que é abaixo deixo uma imagem e um link do release da versão 2650, onde esse profile foi redesenhado. Já é Algo que existe desde sempre, mas ficou muito próximo ou ate mesmo igual ao profiler do VsStudio.


Também abaixo deixei um script que fiz usando um handler dentro da media e é muito rapido, ou seja, o problema é no seu indicador.


https://www.metaquotes.net/en/metatrader5/news/5249


//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int m1;
int handle;
int OnInit()
  {
//---
   handle=iCustom(Symbol(),Period(),"Examples\\Volumes");
   m1 = iMA(Symbol(),Period(),15,0,MODE_SMA,handle);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double mlx[];
   CopyBuffer(handle,0,0,1,mlx);
   Print("Teste : ", mlx[0]);
   Sleep(500);
  }
 


O que vc chama de arcaica? Qual ferramenta e linguagem vc julga melhor? pensando em mercado nacional e forex? Logicamente que existem coisas a serem melhoradas, mas me espanta e muito uma pessoa que vende produtos de uma certa tecnologia falar para outro usuário simplesmente migrar de plataforma/linguagem.



Olá Jonathan


Seria ideal se um dia vier um "MQL6", que tenha arquitetura baseada em C# ao invés de C++, onde haveria, por exemplo, a classe List para poder utilizar ao invés dos arrays. Há várias situações que preciso fazer gambiarras nada elegantes para poder funcionar do jeito que quero, que são coisas que com o List já estão 100% implementadas. Além disso o uso de classes de verdade, ao invés das structs. Enfim, uma linguagem um pouco mais de alto nível. Além disso você tem que concordar comigo que o MT é feião pra caramba né, layout de 20 anos atrás, comparado com ferramentas como Profit, Tryd etc.

O que me faz estar aqui e vendendo produtos? Acho EXCELENTE a maneira como as coisas funcionam no geral, todas as bibliotecas já prontas, deixando o foco do desenvolvedor puramente no algoritmo. Além disso, a popularidade da ferramenta mundialmente, juntamente com os fóruns e a facilidade para comercializar via market. Acho que nenhuma ferramentA chega perto disso.

 
Eduardo Fernando Teixeira:

Seria ideal se um dia vier um "MQL6", que tenha arquitetura baseada em C# ao invés de C++, onde haveria, por exemplo, a classe List para poder utilizar ao invés dos arrays. Há várias situações que preciso fazer gambiarras nada elegantes para poder funcionar do jeito que quero, que são coisas que com o List já estão 100% implementadas. Além disso o uso de classes de verdade, ao invés das structs. Enfim, uma linguagem um pouco mais de alto nível. Além disso você tem que concordar comigo que o MT é feião pra caramba né, layout de 20 anos atrás, comparado com ferramentas como Profit, Tryd etc.

1°- Onde que não há listas em MQL? acho que falta vc ler um pouco mais a documentação, se observasse as respostas do fórum iria ver que eu mesmo já apresentei algumas soluções com lista....E outra nas piores das hipóteses, de que a linguagem não tivesse esse tipo de recurso, era possível implementar o seu próprio List.

2°-Onde que não há utilização de classes, e apenas structs ? (mais uma vez vc demonstra não conhecer quase nada de MQL e muito menos C++)

3°-como back end, eu não me importo para o "visualzinho bonito" e sim se a funcionalidade é boa e robusta.


Sugiro que leia exaustivamente a documentação antes de falar qualquer asneira nesse sentido!

 
Obrigado pelas informações, você não precisa ser tão rude. Tem um gringo que que também é rude que responde um monte de coisa, sempre grosseiro. Isso não é atitude legal, especialmente vindo de moderador, que deveria dar o exemplo. Aqui é um lugar para se aprender.
 
Eduardo Fernando Teixeira:
Obrigado pelas informações, você não precisa ser tão rude. Tem um gringo que que também é rude que responde um monte de coisa, sempre grosseiro. Isso não é atitude legal, especialmente vindo de moderador, que deveria dar o exemplo. Aqui é um lugar para se aprender.

1°- Não fui rude com vc, apenas disse para estudar sobre a linguagem e não falar besteira, pois vc afirmou categoricamente que _("MQL é uma tecnolgia um tanto arcaica", "Seria ideal se um dia vier um "MQL6", que tenha arquitetura baseada em C# ao invés de C++, onde haveria, por exemplo, a classe List", "uso de classes de verdade, ao invés das structs").

2°-Estou aqui para moderar o fórum e não para ser conivente com desinformações, e sim, se houver informações erradas eu vou tentar corrigir. 

3°-Quando vc responde algo, esta corroborando para a formação de opiniões de outros usuário...tão logo seja seletivo em suas respostas, para não gerar desinformação. Não saber algo não é um problema, problema é falar de algo que não sabe. Logo não podemos falar a esmo coisas que não dominamos ou sabemos, pois não agrega em nada e ainda gera opiniões erradas.


Então para ajudar a te esclarecer alguns pontos:

Opções de lista em MQL5

https://www.mql5.com/pt/docs/standardlibrary/datastructures/carrayobj

https://www.mql5.com/pt/docs/standardlibrary/datastructures/clist

https://www.mql5.com/pt/docs/standardlibrary/generic/carraylist

https://www.mql5.com/pt/docs/standardlibrary/generic/clinkedlist

https://www.mql5.com/pt/docs/standardlibrary/generic/clinkedlistnode

 
Jonathan Pereira:

1°- Não fui rude com vc, apenas disse para estudar sobre a linguagem e não falar besteira, pois vc afirmou categoricamente que _("MQL é uma tecnolgia um tanto arcaica", "Seria ideal se um dia vier um "MQL6", que tenha arquitetura baseada em C# ao invés de C++, onde haveria, por exemplo, a classe List", "uso de classes de verdade, ao invés das structs").

2°-Estou aqui para moderar o fórum e não para ser conivente com desinformações, e sim, se houver informações erradas eu vou tentar corrigir. 

3°-Quando vc responde algo, esta corroborando para a formação de opiniões de outros usuário...tão logo seja seletivo em suas respostas, para não gerar desinformação. Não saber algo não é um problema, problema é falar de algo que não sabe. Logo não podemos falar a esmo coisas que não dominamos ou sabemos, pois não agrega em nada e ainda gera opiniões erradas.


Então para ajudar a te esclarecer alguns pontos:

Opções de lista em MQL5

https://www.mql5.com/pt/docs/standardlibrary/datastructures/carrayobj

https://www.mql5.com/pt/docs/standardlibrary/datastructures/clist

https://www.mql5.com/pt/docs/standardlibrary/generic/carraylist

https://www.mql5.com/pt/docs/standardlibrary/generic/clinkedlist

https://www.mql5.com/pt/docs/standardlibrary/generic/clinkedlistnode

Olá,

O mercado não "alisa" ninguém, pelo contrário, rapidamente ele mostra o quanto cruel e impiedoso pode ser....

A informação errada geralmente é mais danosa que a falta da mesma. Por exemplo, se um cego tem dúvidas antes de atravessar a rua ele espera, nada vai lhe acontecer. Mas se alguém vier e disser "- vá que não tem carro..." e estiver errado, o cabra morre. Mesma coisa ocorre aqui com informações errôeas, as pessoas já chegam com dúvidas, estão "cegas" precisam de ajuda. Informação técnica não é opinião, ela precisa ser correta, precisa e se possível exemplificada.

A falta de conhecimento não é vergonha para ninguém, eu mesmo muitos e muitos tópicos deixo de comentar por falta de conhecimento, que no meu caso já é bem baixo no geral. 

Agora prestar informação errada não é legal... e Jonathan foi correto, apenas foi uma resposta sem mimimi, não houve grosseria, foi direta, objetiva e principalmente correta.

 

Muito provavelmente o Gringo Rude sou eu...

Posso até mudar meu nick... Gostei do nome...

Meu caro, aqui não passamos a mão na cabeça de ninguém...

Quem está aqui é para aprender MQL5!

Ou resolver problemas de programação que a pessoa estiver verdadeiramente enfrentando...

O que mais vemos aqui é: 
-- Preciso de ajuda para <Coloque Ser Verbo Aqui> no indicador X e criar meu EA...

-- Foi você quem programou o indicador X ou o EA?

--Não...

-- Você conheçe MQL5?

--Mais ou menos, estou tentando desenvolver meu primeiro EA...

RESUMO: Raramente encontramos perguntas verdadeiramente humildes e úteis a ponto de darmos atenção.

Temos apenas um bando de incautos, alguns iludidos pela promessa de ganhos fáceis de robôs, outros porque simplesmente querem uma plataforma gratuita para operar - o que simplesmente as torna idiotas, porque se elas tivessem um mínimo de discernimento jamais usariam MT5 para operar manualmente o mercado dada a oferta de outras plataformas anos-luz à frente do MT5, E, gratuitas...

;)

Gringo Rude.