Temporizador

 

Na verdade, a questão é, porque é que o temporizador é medido em segundos?

Honestamente, quando ouvi que haveria um temporizador nativo, não fazia ideia que a unidade atómica do tempo seria um segundo em vez de um milissegundo...

Não foi uma descoberta muito agradável (para mim) que fiz recentemente, quando a quis utilizar.


A premissa é muito simples -- o temporizador é normalmente utilizado para sincronização (à espera que os dados sejam calculados) ou observação (uma EA temporizada, imho, será muito mais adequada). Em ambos os casos, um segundo é um pouco demais, mas gostaríamos realmente de ver milissegundos no temporizador.

Mais uma vez, é um bom substituto para a função do sono nos índices e um segundo é demasiado.

Espero que os criadores considerem este pedido. Se necessário, farei um pedido no balcão de serviço.

Abri este tópico para discussão. O que pensa?

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
TheXpert:

Na verdade, a questão é, porque é que o temporizador é medido em segundos?

Honestamente, quando ouvi que haveria um temporizador nativo, não fazia ideia que a unidade atómica do tempo seria um segundo em vez de um milissegundo...

Não foi uma descoberta muito agradável (para mim) que fiz recentemente, quando a quis utilizar.


A premissa é muito simples -- o temporizador é normalmente utilizado para sincronização (à espera que os dados sejam calculados) ou observação (uma EA temporizada, imho, será muito mais adequada). Em ambos os casos, um segundo é um pouco demais, mas gostaríamos realmente de ver milissegundos no temporizador.

Mais uma vez, é um excelente substituto para a função do sono nos índices, e mais uma vez o segundo é demasiado.

Espero que os criadores não ignorem este pedido. Se necessário, farei um pedido no Service Desk.

O tema está aberto a discussão. O que pensa?

Pode acreditar em mim, a realização actual do terminal comercial e o algoritmo de trabalhar com fios em segundos MQ é uma boa solução.

Tanto mais que o tempo no testador é gerado com base na tabela de minutos (tanto quanto eu entendi) e, portanto, uma escala de tempo menor não funcionará.

PS

É claro que os programadores poderiam dar uma resposta mais detalhada, mas basta compreender que o algoritmo actual de trabalhar com fios no Expert Advisor e no terminal, o intervalo de tempo inferior a um segundo ou não é de todo possível ou irá simplesmente causar inconsistência no funcionamento da EA.

Para imaginar as consequências de uma tal solução, é necessário compreender o que acontecerá ao Expert Advisor se o seu temporizador for chamado a cada 500 milissegundos, enquanto o processamento do temporizador, por exemplo, demora um minuto....

 

Interesting:

Especialmente porque o tempo no testador é gerado com base no gráfico de minutos (tal como eu o entendo) e, portanto, uma escala de tempo mais pequena não serve.

O que é que o testador tem a ver com isto?

... Um intervalo de tempo inferior a um segundo ou não é de todo possível ou simplesmente causará inconsistência no trabalho do Consultor Especialista.

De que forma? Porque é que não é possível?

Para imaginar as consequências de uma tal solução, é necessário compreender o que aconteceria ao Expert Advisor se o seu temporizador fosse chamado a cada 500 milissegundos, enquanto o tempo de processamento, por exemplo, leva um minuto....

E o que vai acontecer? E quanto mais assustador é se o temporizador for 1s?

Tem a sua cabeça posta quando escreve comentários?
 
TheXpert:

Na verdade, a questão é, porque é que o temporizador é medido em segundos?

Honestamente, quando ouvi que haveria um temporizador nativo, não fazia ideia que a unidade atómica do tempo seria um segundo em vez de um milissegundo...

Não foi uma descoberta muito agradável (para mim) que fiz recentemente, quando a quis utilizar.


A premissa é muito simples -- o temporizador é normalmente utilizado para sincronização (à espera que os dados sejam calculados) ou observação (uma EA temporizada, imho, será muito mais adequada). Em ambos os casos, um segundo é um pouco demais, mas gostaríamos realmente de ver milissegundos no temporizador.

E mais uma vez, é um bom substituto para a função do sono nos índices e um segundo é demasiado.

Espero que os programadores não deixem o pedido passar sem ser atendido. Se necessário, farei um pedido em servicedesk.

Este tópico está aberto a discussão. O que pensa?

O temporizador em segundos é a nossa decisão consciente. O temporizador destina-se principalmente aos Consultores Especialistas a trabalhar sem carraças.

Se desejar sincronização, utilize vários Expert Advisors em diferentes instrumentos que enviam mensagens personalizadas uns aos outros.

Ou escreva uma espécie de wotchdog, com um laço, por exemplo, num deslizamento de 50 milissegundos, que envia mensagens ao seu Conselheiro Especialista principal quando os eventos esperados ocorrem. Ao fazê-lo, será garantida a entrega das mensagens (a menos, claro, que transborde a fila).

 
stringo:

O temporizador em segundos é a nossa decisão consciente. O temporizador destina-se principalmente a permitir que os peritos trabalhem na ausência de carraças.

Isto pode ser feito sem um temporizador e, a propósito, mesmo sem o incómodo de enviar um evento para si próprio. Então porque não alargar a funcionalidade?

Se quiser sincronização, utilize vários EAs em diferentes ferramentas que enviam mensagens personalizadas umas às outras.

A sincronização pode ser com dados. Por exemplo -- um indicador incorporado. Como resolver esta sincronização no indicador? Não estou a perguntar sobre Consultores Especialistas, tudo se resolve lá sem qualquer problema. Mas num indicador, Dormir é uma paragem de todo o fio, e significa o resto dos indicadores. E isso significa que há muitos problemas com a sincronização.

Também pode escrever uma espécie de loops de cão de guarda para um deslizamento de 50 msec, que envia mensagens ao seu Conselheiro Especialista principal quando ocorrem os eventos esperados. A entrega das mensagens será garantida (a menos que a fila transborde, é claro).

Terá de o fazer, se nada mudar...
 
TheXpert:

O que é que isto tem a ver com o testador?

De que forma? Porque é que não é possível?

E o que aconteceria? E quanto mais assustador é se o temporizador for 1s?

Utiliza a sua cabeça quando escreve comentários?

Penso que se conhece as unidades de tempo atómicas, provavelmente sabe como os processos e os fios estão organizados no sistema operativo e no resto do software.

Mas só para lembrar (caso haja quem não saiba) o básico - Tudo o que acontece no sistema é dividido em processos e fios, cada processo pode ter de um fio a vários. Grosso modo, cada ficheiro executável em execução no sistema é um PROCESSO. Cada processo tem uma prioridade, e cada fio de um processo tem uma prioridade.

Com base nestas prioridades, o sistema atribui tempo de processamento a cada processo (ou fio de um determinado processo).

Assim, a arquitectura do terminal do cliente é tal que apenas um Expert Advisor e vários indicadores podem ser lançados em cada gráfico (como sabe). O Expert Advisor tem um único fio, mas cada indicador recebe o seu próprio fio (completamente independente) do Expert Advisor.

Será óptimo, mas o Expert Advisor ou o próprio indicador só pode correr no seu fio, ou seja, qualquer linha de código leva o fio inteiro e nenhuma outra acção é possível nesse fio (claro, há dúvidas quanto ao processamento de carraças, mas o mais provável é que elas se enquadrem no padrão geral).

Neste caso, para cada gráfico, forma-se um fio separado de eventos que é processado sequencialmente pelo sistema.

Portanto, o processamento do temporizador não pode ser chamado até que o processamento do temporizador anterior esteja terminado. Ou, simplesmente colocado, OnTimer() não será permitido executar até que o fio que deve processar o temporizador esteja ocupado.

Para ilustrar a impossibilidade de iniciar o processamento do temporizador por segundo fio, pode utilizar este exemplo (burro mas claro):

int OnInit()
{
//----------------------------------------------------------------------------//
//Work variables
//----------------------------------------------------------------------------//
EventSetTimer(1);
//----------------------------------------------------------------------------//
return(0);
//----------------------------------------------------------------------------//
}

void OnTimer()
{
//----------------------------------------------------------------------------//
//Work variables
//----------------------------------------------------------------------------//
Print(TimeLocal());
Sleep(2000);
//----------------------------------------------------------------------------//
}

PS

Sobre o testador de estratégias - como se propõe formar o tempo lá?

 

Interesting:

A arquitectura do terminal do cliente é tal que apenas um Expert Advisor e vários indicadores podem ser iniciados em cada gráfico (como se sabe). O Expert Advisor tem um único fio, mas cada indicador recebe o seu próprio fio (completamente independente) do Expert Advisor.

Desde quando? Não vejo quaisquer problemas com guiões e consultores especializados, uma vez que trabalham com os seus próprios fios.

Os indicadores TODOS funcionam em UM fio, como sabe, e complicam a tarefa de organizar o temporizador em qualquer indicador. E por vezes gostaria muito que assim fosse.

O exemplo abaixo mostra como o temporizador não pode ser iniciado por um segundo fio (é um exemplo contundente mas ilustrativo):

Aqui está um exemplo de trabalho. Mostra claramente e sem rodeios o nível do seu pensamento, especialmente também no contexto do posto anterior.

Por favor, nunca mais responda às minhas mensagens, senão não poderei conter-me e chamar-lhe-ei maus nomes e obterei uma proibição.

No entanto, se quiser, sinta-se à vontade para escrever, terei todo o prazer em gozar consigo sobre qualquer tópico relacionado com programação, o diabo com a proibição.

Quanto ao testador de estratégias, como sugere que se forme o tempo lá?
Não estou, até agora estou bem com isso.
 
TheXpert:

Desde quando? Não vejo qualquer problema com roteiros e EAs, pois todos eles trabalham com os seus próprios fios.

E os indicadores TODOS trabalham em UMA linha, que seja conhecida, e complica a tarefa de organizar o temporizador em qualquer indicador. E, por vezes, é mesmo isso que se quer.


Queria não responder, mas não pude ajudar-me.

Os guiões não me interessam, embora não tenha a certeza de onde disse que os Expert Advisors não correm em fios separados (cada um no seu próprio fio). Aqui, aponte-me o lugar onde eu disse o oposto ....

Não tenho a certeza quanto aos indicadores, porque não trabalho muito com eles (certamente que esta questão foi discutida em fóruns, e se algo acontecer, os programadores irão corrigi-la). Sei com certeza que para cada indicador é possível prescrever o seu temporizador (não dependendo do perito), já utilizei esta possibilidade.

Eu sei exactamente o que deveria ter dito sobre os índices.

TheXpert:

O exemplo funciona. Mostra claramente e sem rodeios o nível do seu pensamento, especialmente também no contexto do posto anterior.

E quem duvidaria que funcione, mas o temporizador (que cabra) funciona a cada 2 segundos em vez do 1 declarado, que apontei no bloco de inicialização.

Especialmente para si, coloquei-o num Expert Advisor, embora o problema com a chamada do temporizador fosse óbvio de qualquer forma (vamos supor que para maior clareza, dizem que nas imagens tudo é mais conveniente e mais fácil de entender)...

Agora só preciso de saber como o OnTimer será chamado a cada 500 milissegundos, se o OnTime demora 1 segundo (no exemplo, um segundo e dois segundos, respectivamente)?

TheXpert:

Por favor, nunca mais responda às minhas mensagens, senão não serei capaz de me conter e chamar-lhe-ei maus nomes e obterei uma proibição.

No entanto, se quiser, sinta-se à vontade para escrever, terei todo o prazer em publicar sobre qualquer tópico relacionado com programação, que se lixe, a proibição.

Sim, por favor, eu não tenho de responder...
 
Só numa discussão se pode saber a verdade e em caso de adequação de ambos os argumentos se manterá a sua opinião (direita) e a segunda mudará a sua opinião (errada) para a opinião da primeira.

Portanto, não diga à outra pessoa sobre o que está errado, ou apenas escreva: "está errado, procure no google".

Tanto quanto sei, o fórum - uma conversa mutuamente benéfica, se tiver dúvidas apenas ao criador, vá ao servicedesk.

Ao Interessante

Fiz algumas experiências com o desempenho da MQL5. Deixem-me dizer-vos: a maioria dos Consultores Especialistas desempenham a função OnTick em menos de 0,1 segundos.


Para TheXpert

Porque é que está com tanta pressa?
Mas não vejo o sentido no temporizador em menos de um segundo. Estamos a contar quando dois electrões colidem?
Se for esse o caso, vá em frente com o laço e Durma().

 

mrProF:

Ao Interessante

Tenho feito algumas experiências com o desempenho da MQL5, e deixem-me dizer-vos: a maioria dos EAs executa a função OnTick em menos de 0,1 segundos.

Depende do que colocar lá e de quantos dados processar, mas a MQL5 é bastante rápida, não estou a contestar isso...
 

Outro... Vocês não são irmãos por acaso?

mrProF:

Mas não vejo o ponto num temporizador de menos de um segundo.

O que não significa que não haja um. As tarefas de cada um são diferentes.

Se for esse o caso, vá em frente com o laço e Durma().

Aqui vamos nós... Podemos ler? Mostre-me como fazê-lo para os perus.
Razão: