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
Um núcleo em tempo real ajudaria de alguma forma?
Coloque mais núcleos e não empurre a situação para 100% de carga de um único núcleo.
Não acredite em contos de fadas, processadores e agendadores de fios não funcionam da maneira que você imagina.
Nas últimas construções, a recepção do tick stream não tem efeito, mesmo teoricamente. Praticamente SymbolInfoTick já funciona com cache, mas os cidadãos individuais continuam procurando por um gato preto.
E não está nem 80% no teste. Possui 6 agentes funcionando em 4 núcleos, ou seja, 100% garantido.
A única questão é como o agendador de tarefas de seu sistema está lidando com a situação. Ao mesmo tempo, algumas alegações estão sendo feitas de que a culpa é da implementação do terminal.
Ou seja, uma situação é criada artificialmente quando um computador é sobrecarregado, quando literalmente tudo nele fica mais lento, e então são feitas algumas reivindicações na forma de "Oh, olha, por que o terminal às vezes está atrasado".
Vamos fechar os olhos para o fato de que mesmo em tais condições é "cerca de 0,01%" - para o inferno com os detalhes! Basta dizer que "ninguém se preocupa com a temperatura média hospitalar", "os atrasos causam problemas no comércio" e "queremos o HFT".
Além disso, é claro que queremos HFT em 20 especialistas em uma antiga mesa de escritório ou em uma máquina virtual morta.
PS PositionSelectByTicket() em sua implementação certamente tem acesso a um recurso compartilhado com sincronização de acesso. E se você não selecionar a posição em cada chamada, você está lendo o preço antigo. Foi mais fácil fazer um "instantâneo" através do SymbolInfoDouble.
obrigado
Recebi minha pergunta porque há seis meses atrás, eu estava otimizando meu código e testando a velocidade das funções do sistema, e há seis meses atrás, SymbolInfoDouble era mais lento que SymbolInfoTick
Mas talvez seja verdade o que você está dizendo. Hoje eu estava procurando no Google poucos artigos sobre o cache multi-core (não me interessei por esta informação por muito tempo),
aqui está um pequeno artigohttps://i2hard.ru/publications/25666/
a questão é que os dados só funcionam em ALU a partir do cache L1, que é muito pequeno e se você carregar o processador em velocidade máxima, então realmente - o teste se transformará em um teste do sistema operacional + teste da velocidade do cache do processador (carregamento, previsão de dados L1+L3), mas não no desempenho do código de teste (aplicação)
fxsaber, e se você estabelecer uma prioridade baixa para os agentes em tarefas de gerenciamento e uma prioridade alta para o MT5?
Não consigo encontrar um utilitário que bloqueie todos os programas/fios de OS de serem alocados a uma thread específica da CPU, caso contrário seria possível para o MT5 reservar uma thread e bloqueá-la automaticamente de ser usada por outros programas, o que em teoria poderia reduzir os atrasos.
Nas últimas construções, a recepção do tick stream não tem efeito, mesmo teoricamente. Praticamente, SymbolInfoTick já funciona com cache, mas certos cidadãos continuam procurando um gato preto.
Um determinado cidadão tem o código MQLduplicado de suas calças largas que mostrou que a muleta funciona mais rápido do que a função normal sob as mesmas condições.
Mas você argumenta que sua função é boa, ela só tem limitações quanto às condições de uso.
E não está nem 80% no teste. Existem 6 agentes funcionando em 4 núcleos, ou seja, 100% garantidos.
A única questão é como o agendador de tarefas de seu sistema está lidando com a situação. Ao mesmo tempo, os autores afirmam que a culpa é da implementação do terminal.
Isto é, uma situação é criada artificialmente quando um computador é sobrecarregado até seus limites e tudo fica mais lento nele, e então são feitas algumas reivindicações na forma de "Oh, veja, por que o terminal às vezes está atrasado".
6/8 - nada está atrasado. Navegadores, compilação, depuração, etc. funcionam em paralelo sem qualquer sinal de desfasamento.
Mas agora eu desliguei tudo de propósito, deixando apenas 4/8 Agente. A situação não mudou com sua frenagem funcional.
Emais, é claro, queremos HFT em 20 especialistas em uma mesa de escritório antiga ou em uma máquina virtual morta.
Foi utilizada uma máquina rápida. E apenas 6 gráficos já estavam dando os freios.
PS PositionSelectByTicket() em sua implementação certamente tem acesso a um recurso compartilhado com sincronização de acesso. E se você não selecionar a posição em cada chamada, você lê o preço antigo. Foi mais fácil "instantâneo" via SymbolInfoDouble.
Eu também uso isto.
Que tipo de velocidade no desempenho de combate podemos falar quando há problemas no terminal.
O Expert Advisor escaneia todos os instrumentos financeiros e procura por um determinado padrão.
Ela tropeça em um símbolo e fica pendurada!!!
Código de ajuda, eu coloco apenas passos, instrumento financeiro com problema e temporizador:
Resultado do trabalho:
Eu nunca esperei que o roteiro terminasse de correr.
Enquanto o terminal tiver tais bugs, nenhuma execução de batalha está fora de questão!!!
Era esperado que quando uma segurança entra na revisão do mercado, pelo menos todas as suas propriedades e a data de início da história são puxadas para cima para ela. Se não houver histórico no servidor, então
SeriesInfoInteger(symbol,period,SERIES_FIRSTDATE,first_date)
Deve retornar NULL imediatamente, por que o tempo de execução 18446744073475877877138 ?
Talvez eu não saiba de nada, a função CopyXXX também fica pendurada por 16-29 segundos!!!
Não é normal que um corretor tenha 3000-6000 instrumentos financeiros.
Talvez eu não saiba o quê, as funções CopyXXX também ficam penduradas por 16-29 segundos!!!
Não é normal que um corretor tenha 3000-6000 instrumentos financeiros.
As barras são más. Portanto, por favor, poste sobre eles em outro tópico.
As barras são más. Portanto, por favor, poste sobre eles em outro tópico.
Talvez você saiba como programar um instrumento financeiro e não ficar pendurado por muito tempo?
Talvez você saiba como programar um instrumento financeiro e não ficar pendurado por muito tempo?
Ainda não me deparei com tal tarefa.
fxsaber, e se você estabelecer uma prioridade baixa para os agentes em tarefas de gerenciamento e uma prioridade alta para o MT5?
Não consigo encontrar um utilitário que bloqueie a alocação de uma thread específica da CPU para todos os programas/ threads de SO, caso contrário seria possível reservar uma thread para MT5 e bloquear automaticamente sua ocupação por outros programas, o que em teoria poderia reduzir os atrasos.
Defina todos os agentes com a menor prioridade.
Não funciona.
ZZZ O número de EAs em execução afeta o resultado.
Caros desenvolvedores, poderiam me informar como a MQL_MEMORY_USED é calculada?
Eu fiz um cálculo da memória que todas as variáveis EA ocupam.
É inferior a 10%. Se eu entendi corretamente, MQL_MEMORY_USED contém o cache de Histórico e o cache CopyTicks. Mas ainda é muito menos.
Ao mesmo tempo, o Expert Advisor paralelo consome várias vezes menos. Mas o princípio é o mesmo.
Em geral, o que está incluído neste valor?
Salvei um modelo com o Expert Advisor e o apliquei no mesmo gráfico, causando recarga. Já o vi assim.
O uso da memória mudou quase por uma ordem de grandeza. É difícil explicar o que isto significa no momento.