Boa tarde Pessoal,
no EA que estou trabalhando utiliza um indicador que modifica o calculo dependendo do horário por exemplo:
começa o pregão as 9h o indicador começa a calcular, chega as 14h o indicador "reseta" o calculo e começa do zero a partir das 14h.
Minha duvida está nesta mudança do indicador em relação ao CopyBuffer no EA, como ele se comportaria e como seria mais seguro trabalhar com essa mudança?
utilizo a copia de 4 dados do indicador, quando ocorrer está troca, no loop do Ontick() ele copia 4 valores novos cada execução? ou será necessário usar um Arrayfree ou alguma função para zerar esse array para receber os novos valores?
não sei se ficou claro, mas se não entenderem posso tentar explicar de outra forma.
Bom dia a todos!
Eu também preciso alterar parâmetros de indicadores usando MT5 - no meu caso, a cada novo candle D1, então estou chamando iMA() e iSAR() em OnTick(), ao invés de em OnInit(), PORÉM, essa mudança no local de chamada dos indicadores (mesmo chamando apenas uma vez por dia), deixou o meu EA cerca de (inacreditáveis) 20 vezes mais lento. Se alguém tiver alguma sugestão de como alterar os parâmetros de indicadores durante a execução do EA sem comprometer TANTO a velocidade do mesmo, agradeço muito. Já quebrei muito a cabeça durante alguns dias, mas até agora nada ...
Boa tarde Pessoal,
no EA que estou trabalhando utiliza um indicador que modifica o calculo dependendo do horário por exemplo:
começa o pregão as 9h o indicador começa a calcular, chega as 14h o indicador "reseta" o calculo e começa do zero a partir das 14h.
Minha duvida está nesta mudança do indicador em relação ao CopyBuffer no EA, como ele se comportaria e como seria mais seguro trabalhar com essa mudança?
utilizo a copia de 4 dados do indicador, quando ocorrer está troca, no loop do Ontick() ele copia 4 valores novos cada execução? ou será necessário usar um Arrayfree ou alguma função para zerar esse array para receber os novos valores?
não sei se ficou claro, mas se não entenderem posso tentar explicar de outra forma
Bom dia Gustavo,
o COPYBUFFER faz a cópia do array INDICATOR DATA, então se o array foi "resetado" no indicador ele vai copiar "resetado" para o EA.
Bom dia a todos!
Eu também preciso alterar parâmetros de indicadores usando MT5 - no meu caso, a cada novo candle D1, então estou chamando iMA() e iSAR() em OnTick(), ao invés de em OnInit(), PORÉM, essa mudança no local de chamada dos indicadores (mesmo chamando apenas uma vez por dia), deixou o meu EA cerca de (inacreditáveis) 20 vezes mais lento. Se alguém tiver alguma sugestão de como alterar os parâmetros de indicadores durante a execução do EA sem comprometer TANTO a velocidade do mesmo, agradeço muito. Já quebrei muito a cabeça durante alguns dias, mas até agora nada ...
Bom dia, Vinicius
a construção do handle dever ser feita uma vez só e de preferência no OnInit(), no OnTick() você faz somente o CopyBuffer().
Bom dia, Vinicius
a construção do handle dever ser feita uma vez só e de preferência no OnInit(), no OnTick() você faz somente o CopyBuffer().
Bom dia Rogério!
Pois é, foi o que eu pensei. Interessante que no MQ4 os indicadores são chamados em OnTick() sem grande perda de velocidade. Pelo menos nesse quesito, ponto pro MQ4 :)
Muito obrigado por seu tempo e um abraço!
Boa tarde Pessoal,
no EA que estou trabalhando utiliza um indicador que modifica o calculo dependendo do horário por exemplo:
começa o pregão as 9h o indicador começa a calcular, chega as 14h o indicador "reseta" o calculo e começa do zero a partir das 14h.
Minha duvida está nesta mudança do indicador em relação ao CopyBuffer no EA, como ele se comportaria e como seria mais seguro trabalhar com essa mudança?
utilizo a copia de 4 dados do indicador, quando ocorrer está troca, no loop do Ontick() ele copia 4 valores novos cada execução? ou será necessário usar um Arrayfree ou alguma função para zerar esse array para receber os novos valores?
não sei se ficou claro, mas se não entenderem posso tentar explicar de outra forma.
Bom dia Gustavo!
Conseguiu uma solução viável pra esse problema?
Bom dia Gustavo!
Conseguiu uma solução viável pra esse problema?
Bom dia Vinicius,
não era bem um problema, era uma duvida sobre a forma que o CopyBuffer trabalhava, meu medo era gerar erros na execução do EA, Mas pelo visto a cada execução do Ontick() é renovado todos os elementos solicitados no CopyBuffer era essa minha duvida.
Muito Obrigado pela ajuda!
Bom dia Vinicius,
não era bem um problema, era uma duvida sobre a forma que o CopyBuffer trabalhava, meu medo era gerar erros na execução do EA, Mas pelo visto a cada execução do Ontick() é renovado todos os elementos solicitados no CopyBuffer era essa minha duvida.
Muito Obrigado pela ajuda!
Ok, um abraço!
Bom dia a todos!
Eu também preciso alterar parâmetros de indicadores usando MT5 - no meu caso, a cada novo candle D1, então estou chamando iMA() e iSAR() em OnTick(), ao invés de em OnInit(), PORÉM, essa mudança no local de chamada dos indicadores (mesmo chamando apenas uma vez por dia), deixou o meu EA cerca de (inacreditáveis) 20 vezes mais lento. Se alguém tiver alguma sugestão de como alterar os parâmetros de indicadores durante a execução do EA sem comprometer TANTO a velocidade do mesmo, agradeço muito. Já quebrei muito a cabeça durante alguns dias, mas até agora nada ...
faça o chamado dos indicadores em Oninit() se colocar no Ontick() a cada execução ele vai carregar o indicador acredito que seja esse o motivo da lentidão.
faça o chamado dos indicadores em Oninit() se colocar no Ontick() a cada execução ele vai carregar o indicador acredito que seja esse o motivo da lentidão.
Sim, é por isso mesmo. Eu já retornei pra OnInit(). Eu queria alterar o valor dos parâmetros dos indicadores (período, step, ...) com base em algumas condições atuais do mercado, mas adiei por enquanto essa mudança. Acho que, depois, vou ter que colocar o código dos indicadores no EA para tentar não perder tanta velocidade nessas alterações de parâmetros.
Sim, é por isso mesmo. Eu já retornei pra OnInit(). Eu queria alterar o valor dos parâmetros dos indicadores (período, step, ...) com base em algumas condições atuais do mercado, mas adiei por enquanto essa mudança. Acho que, depois, vou ter que colocar o código dos indicadores no EA para tentar não perder tanta velocidade nessas alterações de parâmetros.
e se carregar no ontime() sera que daria?
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Boa tarde Pessoal,
no EA que estou trabalhando utiliza um indicador que modifica o calculo dependendo do horário por exemplo:
começa o pregão as 9h o indicador começa a calcular, chega as 14h o indicador "reseta" o calculo e começa do zero a partir das 14h.
Minha duvida está nesta mudança do indicador em relação ao CopyBuffer no EA, como ele se comportaria e como seria mais seguro trabalhar com essa mudança?
utilizo a copia de 4 dados do indicador, quando ocorrer está troca, no loop do Ontick() ele copia 4 valores novos cada execução? ou será necessário usar um Arrayfree ou alguma função para zerar esse array para receber os novos valores?
não sei se ficou claro, mas se não entenderem posso tentar explicar de outra forma.