OpenCl e as ferramentas para ele. Revisões e impressões. - página 2

 
Mathemat:

Articuladamente, você não precisa ser tão categórico. O mundo não fica parado. Placas gráficas monstruosas modernas, baseadas em sua lógica, também devem ser reconhecidas como uma consequência da falta de idéias no processamento de imagens?

Às vezes eu mesmo tenho o prazer de acelerar - apenas para evitar esperar na depuração de código para terminar cálculos pesados, que estão todos no meu código no init() (cerca de 10 segundos). E todos os outros cálculos, que acontecem "on the fly", são realmente rápidos, portanto não preciso de multithreading aqui.

Acredito que este tipo de poder é necessário para testar certas idéias. Por exemplo, seria muito interessante observar os resultados de um teste prospectivo dos últimos 10 anos para 32 pares de moedas. E para realmente carregar a máquina, vamos construir o sistema em um pequeno TF. Vamos supor que seja M15. O período de otimização é de 8 semanas e Fora da Amostra é de 2 semanas. Embora, será mais óbvio na tabela:

Se a otimização levar 1 minuto, passaremos aproximadamente 138 horas. O número de etapas (otimizações) é 8320. Esta é uma estratégia comercial. E se for um portfólio? E se não houver um sistema e nós estivermos procurando por um? ))) A partir deste ponto, torna-se claro que nunca há poder suficiente.

 
Mathemat:

Fico feliz em me acelerar às vezes - apenas para evitar esperar por cálculos pesados, que estão todos no meu init() (cerca de 10 segundos), ao depurar o código. E todos os outros cálculos, que acontecem "on the fly", realmente correm muito rápido, de modo que não é necessário fazer multithreading aqui.

Provavelmente é possível calculá-las uma vez e armazená-las em cache?
 
tol64:

Creio que é necessário um poder desta escala para testar estas ou aquelas idéias {...} O número de etapas (otimizações) é 8320.

Bem, e se você quiser, por exemplo, várias centenas de milhares de corridas? :-)
 
jartmailru:
Provavelmente é possível calculá-las uma vez e armazená-las de alguma forma?

O que é "cache" como aplicado a uma simples MQL4?

Estou apenas depurando o código do indicador. Quando pressiono F5, ele recompila novamente, mas só exibe informações após os cálculos, a grande maioria dos quais são feitos no init().

É claro, você pode salvar o código em um arquivo e lê-lo de lá enquanto o depura. Mas isto é um pouco incômodo e no lugar errado.

 

Na verdade, a idéia não é tão absurda, Alexey, a única questão é o método de implementação.

Afinal, até a CPU tem seu próprio cache por um motivo, e até mais de um)

 

E como você se propõe a fazê-lo - sem se referir à codificação externa à MQL4?

Eu já sugeri - através de arquivos. Mas é longo e incômodo.

 

Um cache geralmente implica em RAM para rápida recuperação e modificação de dados subseqüentes.

Em essência, trata-se de um banco de dados trivial. Obviamente, isto exigirá capacidade adicional, mas os ganhos de desempenho podem ser substanciais.

 
A única "RAM" que sobreviverá à recompilação, usando apenas ferramentas MQL4, é a escrita para variáveis globais. É isso que você quer dizer?
 

Não necessariamente, por exemplo, você poderia usar o mapeamento já implementado pela Junko. Não estou nem mesmo falando de sua tarefa específica, apenas o próprio princípio me parece bastante racional.

 
Eu não sei o que é mapeamento.
Razão: