O compilador pode fazer muitas coisas, mas não isso :-)
E este caso pode ser otimizado. Primeiro, o próprio indicador deve ser escrito de forma inteligente (não para recalcular todas as barras em cada tic), segundo, o indicador deve ser super pesado, para de alguma forma retardar a EA... Para resumir uma longa história...
E aqui está um artigo interessante sobre "Redução do consumo de memória de indicadores auxiliares".
Tive um Expert Advisor com várias moedas que recebeu leituras indicadoras para 28 símbolos durante 8 períodos de tempo.
Eram 28*8=224 cópias de indicadores. Eu me esforcei para otimizar o processo. A operação com várias moedas consumiu quase 700 MB de RAM. Eu resolvi facilmente - eu apenas ajustei o campo "Max barras na janela" nas configurações do terminal na aba "Gráficos" para um valor pequeno... Tanto quanto me lembro, o mínimo para este campo é de 5 mil barras.
- 2011.03.18
- Andrew
- www.mql5.com
Eu medi o aumento do tempo de teste por um fator de 1,2 a 1,3, o que é bastante insignificante em comparação com os benefícios dados pelos indicadores personalizados.
A conclusão sobre 5 amortecedores está errada. Se os parâmetros forem os mesmos, apenas um indicador será carregado.
Integer:
A conclusão sobre os 5 amortecedores é incorreta. Se os parâmetros forem os mesmos, apenas um indicador será carregado.
Sim, eu concordo.
Haverá 5 chamadas da função CopyBuffer() com diferentes argumentos (número buffer). E a cópia indicadora - cabo - será a mesma.
O autor deu um título alto ao tópico "Teoria da Aceleração..." mas ele não tem a menor idéia das coisas básicas.
-Aleks, há muitos artigos sobre este assunto!
Sim, eu concordo.
Haverá 5 chamadas para a função CopyBuffer() com diferentes argumentos (número buffer). E haverá apenas uma cópia do indicador - cabo.
O autor deu um título alto ao tópico "Teoria da Aceleração..." mas ele não tem a menor idéia das coisas básicas.
-Aleks-, há muitos artigos sobre o tema do indicador!
Denkir, estou falando do trabalho da EA durante a otimização, o número de candelabros no gráfico afeta a quantidade de cálculos? Eu estudei o artigo, sei que existem variantes de indicadores de otimização. Entretanto, neste caso, quero acreditar que o indicador é perfeito e examinar o método de passar os dados do indicador para a EA. Não sou programador e tenho dificuldade em verificar a otimização do código indicador - no máximo posso prescrever no TOR - 1 barra de atraso e limitação do histórico para cálculos.
Eu medi, o aumento do tempo de teste em 1,2 - 1,3 vezes, o que é absolutamente insignificante em comparação com os benefícios proporcionados pelos indicadores personalizados.
Minha conclusão sobre 5 amortecedores não está correta. Se os parâmetros forem os mesmos, apenas um indicador será carregado.
O que você estava medindo? E 30% não é tão pouco para mim.
Sobre os 5-buffers, se eu o entendi corretamente, então com os mesmos parâmetros de entrada do indicador, o cálculo é feito para apenas um indicador quando o Expert Advisor chama o último várias vezes e obtém informações de diferentes buffers?
Se assim for, então a combinação de indicadores personalizados deve acelerar o trabalho do Expert Advisor? Por exemplo, então em um indicador a lógica de diferentes indicadores com configurações independentes pode ser implementada, quando qualquer um deles é chamado, as informações de todos os buffers são recebidas de uma só vez e utilizadas no caso de solicitação de informações de outro buffer com os mesmos parâmetros?
VDev:
Eu tentei medir a velocidade de chamada dos índices embutidos e seus análogos através do iCustom. Os embutidos são cerca de 20-50% mais rápidos. Muito provavelmente porque são escritas em C++ e não em MQL.
Artigo extremamente interessante "Séries de preços em média sem amortecedores adicionais para cálculos intermediários " por GODZILLA.
Foi escrito em 2010.
Há uma seção 3. comparação do indicador obtido usando classes com seus análogos com chamadas de indicadores técnicos e personalizados no código
- 2010.10.25
- Nikolay Kositsin
- www.mql5.com
Sim, eu concordo.
Haverá 5 chamadas para a função CopyBuffer() com diferentes argumentos (número buffer). E haverá apenas uma cópia do indicador - cabo.
O autor chamou alto o tema "Teoria da Aceleração..." e ele não faz a menor idéia sobre o básico.
-Aleks-, há muitos artigos sobre o tema do indicador!
E você pode simplesmente desmentir minha hipótese (no 4, de preferência), confirmando minhas palavras com números?
O tópico é sobre minha teoria - o título é ok :)
Denkir, estou falando do desempenho da EA durante a otimização, o número de candelabros no gráfico afeta a quantidade de cálculos?
-Aleks-, sobre o testador Você precisa perguntar ao desenvolvedor ...
Mas acho que há um problema com os termos na discussão. Você quer reduzir a velocidade dos cálculos ou salvar a RAM para trabalhar com o indicador?
-Aleks-, sobre o testador. Você precisa perguntar aos desenvolvedores...
Mas, a meu ver, há um problema com os termos na discussão. O que você quer, reduzir a velocidade dos cálculos ou salvar a RAM para trabalhar com o indicador?
Parece-me que meu método resolverá estes dois problemas. Eu posso estar errado.
Ao otimizar, a velocidade é importante, mas uma vez que a RAM está entupida, novamente, de acordo com minhas observações, a velocidade de processamento por passe diminui.
Alguém pode comparar a velocidade desta abordagem, há alguma razão por trás disso?
Esta abordagem reduzirá o consumo de memória do indicador (aproximadamente um múltiplo da diferença no número de buffers antes e depois), mas aumentará a carga no processador (tanto a "montagem" quanto a "decomposição" devem ser feitas constantemente).
E se o indicador tiver 5 buffers, então a primeira chamada do iCustom calculará todos os buffers, as chamadas e solicitações subseqüentes de outros buffers só lerão as informações prontas (até o surgimento de novos dados para cálculo).
Se você tiver um indicador realmente pesado, pense em seu próprio sistema de cache, para que na primeira chamada os dados sejam calculados e escritos no arquivo, e nas próximas chamadas eles sejam apenas lidos. Eu fiz desta maneira, é muito mais rápido.
Mas em 95% dos casos não há necessidade de tudo isso, o testador é rápido o suficiente, e em 5 você também pode conectar a nuvem.
Boa sorte!
- 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
Começarei dizendo que não sou programador e que poderia estar errado, mas gostaria de ouvir a opinião de um profissional sobre a idéia sugerida abaixo, com base em cálculos.
O uso de indicadores personalizados é uma questão atual quando se desenvolve um Expert Advisor em várias etapas. É especialmente importante quando os programadores se substituem, e então é melhor colar parte da lógica do Expert Advisor no indicador - testar a lógica (para verificar os cálculos e sua relevância) e depois trabalhar em uma nova parte da idéia. Como resultado, obtemos um Expert Advisor não muito complexo que realmente solicita informações do indicador e toma uma decisão comparando os dados esperados e reais.
Mas, esta abordagem tem uma desvantagem significativa - a velocidade de um consultor especializado como este. O fato é que quanto mais freqüentemente os dados são solicitados dos indicadores personalizados, mais lento o cálculo e mais recursos (memória) são necessários para a otimização.
Até agora eu trabalho no MT4, mas o princípio, como eu o entendo, é o mesmo.
E o problema não está na velocidade de cálculo do indicador iCustom em si, mas em sua conexão com o Expert Advisor.
Suponha que o indicador utilize 5 buffers de gráfico e a EA exija informações desses buffers, então ela precisa utilizar 5 funções iCustom em seu código e realmente colocar 5 indicadores no gráfico em vez de um indicador, o que requer 5 vezes mais recursos. Talvez eu esteja errado, e o compilador analisa esta circunstância - ele calcula para um indicador e dá a todas as funções os dados para os amortecedores necessários de uma só vez? Nesse caso, minhas demais especulações são vãs.
Mas, se não é assim, por que não fundir as informações do indicador em um único pacote?
Proponho fazer uma experiência sobre este tópico com a medição do desempenho do Expert Advisor.
Isto exigirá a tomada de um indicador personalizado com mais de 1 tampão e a adição de um tampão adicional.
O algoritmo é lógico (não matemático):
1. Converter os buffers no indicador em inteiros, dependendo dos dígitos por número, um total de 3 buffers, foi: 1.21101; 1.13; 5, tornou-se: 121101;113;5
2. Contamos quantos dígitos a serem colocados após o primeiro número - no nosso caso 4, depois no próximo número o próximo número é 1, estes valores são o grau do multiplicador:
1,21101*10^4=1211010000
1.13*10^1=113
5*10 ^0=5 (verifique para 0)
3. Some os números e obtenha 1211011135.
4. Escreva o valor no buffer 4.
5. Solicitamos o buffer de 4 indicadores no Expert Advisor e decompomos o valor em componentes em ordem inversa e obtemos 3 números que podem ser usados para o trabalho do Expert Advisor.
Alguém pode comparar a velocidade desta abordagem, há alguma razão por trás disso?