Teste o novo compilador MQL5 para plataformas x64 - cálculos 2 a 10 vezes mais rápidos! - página 2
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Por exemplo, as comunicações interterminais.
Bem, se você torcer assim, então é claro que a DLL é uma característica útil...
Mas eu pessoalmente para esta mesma tarefa decidi que não preciso realmente de uma DLL para isso. Neste momento estou pensando em uma EA que pegaria citações de uma corretora e enviaria sinais para outra, e que não tem nem mesmo MetaTrader. (DucaCopi, a propósito, pergunto-me se a MetaQuotes concordará com este venerável corretor...).
Estava pensando na direção da DLL. Mas decidiu que os arquivos compartilhados são muito mais seguros e mais razoáveis. Deixe MetaTrader escrever sinais para o arquivo. E deixe outro MetaTrader (ou JForex ou outra pessoa) lê-los e executá-los.
A propósito, estive pensando em referências de matriz...
Renat, eu faço uma sugestão:
Como temos uma Biblioteca Padrão, não deveríamos acrescentar uma variante da função OnCalculate() com o seguinte protótipo:
intOnCalculate(constint rates_total,//size of input timeseries
constint prev_calculado,// barras processadas na chamada anterior
const CiTime* ptTime,// Tempo
const CiOpen* poOpen,// Aberto
const CiHigh* phHigh,// Alto
const CiLow* plLow,// baixo
const CiClose* pcClose,// Fechar
const CiTickVolume* ptvTickVolume,// Volume do Tick
const CiRealVolume* prvRealVolume,// Volume real
const CiSpread* psSpread// Spread
);
?
Na minha opinião, isto exigiria mudanças muito pequenas no MetaTrader, mas, por outro lado, simplesmente fornece indicações para as matrizes, que podem ser passadas para as classes de manipuladores sem cópia. E a idéia da própria Biblioteca Padrão é popularizada.
Obteve os primeiros resultados de comparar o desempenho do antigo e do novo compilador, por exemplo, de um projeto realmente grande (~20.000 linhas de código fonte).
Resultados do tempo de execução do programa compilado com a versão antiga do compilador (4 execuções):
Resultados do tempo de execução de um programa compilado na nova versão do compilador (4 execuções):
*A segunda e a próxima execução do programa foram realizadas em cache aquecido - como se vê, o cache aquecido aumenta a produtividade em 15-30%.
Como você pode ver, os resultados são melhores no novo compilador: levou ~6,4 segundos para analisar mais de 20000 negócios e pedidos na primeira execução e ~5,4 segundos na segunda, ou seja, o ganho de desempenho de 15-20%.
A melhoria do desempenho poderia ter sido maior, mas a maior parte do tempo é ocupada por chamadas de funções do sistema.
O novo compilador não detectou erros no projeto, totalizando mais de 20.000 linhas de código fonte. Este é um excelente resultado, levando em conta que este projeto foi criado para a versão antiga do compilador.
Entretanto, o novo compilador gerou várias mensagens de aviso relacionadas à exibição incorreta de caminhos de arquivos (exigência de fuga de barra):
Esta é uma exigência justa, que pode ser facilmente atendida com algumas pequenas modificações.
Assim, podemos concluir que mesmo grandes projetos escritos em MQL5 estão prontos para o novo compilador e a mudança para ele não será um problema para os desenvolvedores profissionais.
...
Eu recebo"erro de geração de código 1 1".
...
O principal ganho está na matemática e nos próprios cálculos.
Ainda é bom, porque você pode criar seu próprio ambiente com o mínimo de chamadas de função do sistema.
(copiando o ambiente uma vez em suas aulas e trabalhando com ele diretamente).
Bem, se você torcer assim, então é claro que a DLL é uma característica útil...
Mas eu pessoalmente para esta mesma tarefa decidi que não preciso realmente de uma DLL para isso. Neste momento estou pensando em uma EA que pegaria citações de uma corretora e enviaria sinais para outra, e que não tem nem mesmo MetaTrader. (DucaCopi, a propósito, pergunto-me se a MetaQuotes concordará com este venerável corretor...).
Pensei em dll. Mas eu decidi que é mais seguro e mais sensato usar arquivos compartilhados. Deixe MetaTrader escrever sinais para o arquivo. E outro MetaTrader (ou JForex, ou outra pessoa) - deixe-os ler e executar.
Há uma opção com canais nomeados, mas há a necessidade de um servidor intermediário,
Há exemplos de como fazer isso no fórum.
Por exemplo, as comunicações interterminais.
Há uma opção com canais nomeados, mas você precisa de um servidor intermediário,
Há exemplos de como fazer isso no fórum.
Não há necessidade de nenhum canal nomeado! Esperando para adicionar suporte SQL. Troca de dados através de uma tabela. SQL é um suporte integrado para sistemas de alta carga multi-tarefa.