Discussão do artigo "Interfaces Gráficas X: Gestão avançada de listas e tabelas. Otimização do código (build 7)" - página 4

 
Anatoli Kazharski:

Por meio de eventos, então. Mas não por meio de um cronômetro com essa frequência. Em geral, os freios estão do seu lado, não do lado da biblioteca ou da gravação de vídeo. Não tenho mais perguntas.

Está claro que os freios estão do meu lado - não seja tão vulnerável (você tenta se defender ;)). Mas o fato de não haver tais freios sem gravação de vídeo é um fato. Eles existem, mas são pequenos.

Como você pode organizar um modelo de evento sem um cronômetro ao tentar um número desconhecido de caracteres? O OnTick()não permitirá que você detecte em tempo hábil o evento necessário em um símbolo "não nativo".
Portanto, basta navegar pelo cronômetro em um loop por todos os símbolos necessários, definir o critério e enviar o evento. Em seguida, já processar o evento.
Já pensei sobre isso. De qualquer forma, não é possível se livrar do loop pelos caracteres no timer com controle dos critérios necessários. E o processamento de eventos não leva muito tempo. Embora isso alivie um pouco o cronômetro. Vou tentar, é claro - eu já estava indo tentar.

 
Artyom Trishkin:

...

Como organizar um modelo de evento sem um cronômetro ao pesquisar um número desconhecido de caracteres? O OnTick()não permitirá que você determine o evento necessário em um caractere "não nativo" no tempo.
Portanto, apenas examine o cronômetro em um loop por todos os caracteres necessários, determine o critério e envie o evento. Em seguida, já processe o evento.
Já pensei sobre isso. De qualquer forma, não é possível se livrar do loop pelos caracteres no timer com controle dos critérios necessários. E o processamento de eventos não leva muito tempo. Embora isso alivie um pouco o cronômetro. Vou tentar, é claro - eu já estava planejando fazer isso.

E quantos caracteres estavam no processamento durante a gravação do vídeo?

Essa opção não é adequada? >>> MQL5 Recipes - Multicurrency Expert Advisor: um exemplo de um esquema simples, preciso e rápido. Se não, por que não?

 
Artyom Trishkin:


Como organizar um modelo de evento sem um cronômetro ao pesquisar um número desconhecido de caracteres? OnTick()não permitirá que você defina oportunamente o evento necessário em um caractere "não nativo".
Portanto, apenas para exibir todos os caracteres necessários por meio do cronômetro em um loop, defina o critério e envie o evento. Em seguida, já processar o evento.
Já pensei sobre isso. De qualquer forma, não é possível se livrar do loop pelos caracteres no timer com controle dos critérios necessários. E o processamento de eventos não leva muito tempo. Embora isso alivie um pouco o cronômetro. Vou tentar, é claro - eu já estava tentando.

Em uma ocasião, estudei os intervalos de tempo entre os ticks de entrada por algum motivo. Estava procurando alguns padrões. Passei semanas estudando isso. Posso dizer que os fluxos observados de ticks vinham com uma frequência não superior a 90 a 100 milissegundos.

Se você precisar verificar se há ticks em muitos instrumentos, acho que não faz sentido fazer isso com mais frequência do que uma vez a cada 100 milissegundos. Não creio que haja assincronia na chegada dos ticks entre os instrumentos, o que tornaria necessário aumentar a frequência de verificação até o máximo de 16 ms.

Você pode verificar facilmente se há assincronia na chegada de ticks nos instrumentos, o que aumenta a frequência total de ticks para 16 ms com o Alert.
 
Anatoli Kazharski:

E quantos caracteres estavam no processamento quando o vídeo foi gravado?

Essa variante não é adequada? >>> MQL5 Recipes - Multicurrency Expert Advisor: um exemplo de um esquema simples, preciso e rápido. Se não, por que não?

O número total de símbolos envolvidos foi de cerca de 13 de 34 - a presença de um sinal nos símbolos é primeiramente determinada lá, os que têm um sinal são selecionados e esses são os que participam da busca no cronômetro - o preço que cruza os níveis exigidos é procurado.

Eu estava me perguntando por que preciso procurar uma nova barra para cada símbolo presente no Market Watch no cronômetro - é um desperdício inadmissível de recursos quando apenas três tf's são usados - diário, semanal e mensal. Precisamos de algum outro algoritmo. Mas, novamente, independente dos ticks do símbolo atual.

Quanto ao modelo de evento proposto, eu já o pratiquei, mas somente nos casos em que os gráficos estavam abertos. Mas, dessa forma, terei de adicionar um agente para cada símbolo necessário (não conhecido antecipadamente), que enviará eventos - isso não exigirá aindamais recursos?

 
Artyom Trishkin:

O número total de símbolos envolvidos foi cerca de 13 de 34. Lá, a presença de um sinal nos símbolos é determinada primeiro, os que têm um sinal são selecionados e esses são os que participam da pesquisa no cronômetro - o cruzamento de preço dos níveis necessários é pesquisado.

Eu estava me perguntando por que preciso procurar uma nova barra para cada um dos símbolos presentes no Market Watch - é um desperdício inaceitável de recursos quando apenas três tf's são usados - diário, semanal e mensal. Precisamos de algum outro algoritmo. Mas, novamente, independente dos ticks do símbolo atual.

Quanto ao modelo de evento proposto, eu já o pratiquei, mas somente nos casos em que os gráficos estavam abertos. Mas, dessa forma, terei que adicionar um agente para cada símbolo necessário (não conhecido antecipadamente), que enviará eventos - isso não exigirá aindamais recursos?

Não posso dizer com certeza qual será o resultado no final. Preciso testá-lo. Estou ocupado, portanto, se você fizer isso, demonstre-o mais tarde, se tiver um minuto livre. Muito interessante.

Agora estou trabalhando em um campo de entrada de várias linhas(CTextBox) sem restrições. Ele será quase análogo ao aplicativo do Windows "Notepad". )

 
Anatoli Kazharski:

Não posso dizer com certeza qual será o resultado no final. Preciso testá-lo. Estou ocupado, portanto, se você fizer isso, demonstre-o mais tarde, se tiver um minuto livre. Muito interessante.

Agora estou trabalhando em um campo de entrada de várias linhas(CTextBox) sem restrições. Ele será quase análogo ao aplicativo do Windows "Notepad". )

Ok, vamos ver qual será o resultado.

Campo de entrada interessante - vamos ver ;)

 
Artyom Trishkin:

Eu estava me perguntando por que preciso procurar uma nova barra para cada um dos símbolos presentes na Observação do mercado no cronômetro - isso é um desperdício indesculpável de recursos quando apenas três tf's são usados - diário, semanal e mensal. Precisamos de algum outro algoritmo. Mas, novamente, independente dos ticks do símbolo atual.

O tempo teórico do aparecimento da próxima barra é conhecido. E é o mesmo para todos os instrumentos.

Você pode verificar se uma barra realmente apareceu na lista de instrumentos de trabalho somente quando esse tempo estimado chegar.

 
Andrey Khatimlianskii:

O tempo teórico de aparecimento do próximo compasso é conhecido. E ele é o mesmo para todos os instrumentos.

Você pode verificar se uma barra realmente apareceu na lista de instrumentos de trabalho somente quando esse tempo estimado chegar.

Sim, Andrei, ele é conhecido. Mas é diferente para mercados diferentes. No Forex é uma coisa, nas ações é bem diferente. Eu não gostaria de introduzir o controle manual desse tempo. Gostaria que ele fosse capaz de determinar novas barras em qualquer mercado por si só, sem especificar o tempo a partir do qual ele deve começar a esperar por sua ocorrência.

E, sim, nem em todos os símbolos do mesmo mercado uma nova barra aparece ao mesmo tempo que as outras - quando o primeiro tique aparece. Isso significa que você precisa aguardar o aparecimento de novas barras em todos os símbolos por algum tempo.

 
Artyom Trishkin:

Sim, Andrei, isso é conhecido. Mas é diferente para mercados diferentes. Em forex é uma coisa, em ações é bem diferente. Eu não gostaria de introduzir o controle manual desse tempo. Gostaria que ele fosse capaz de determinar novas barras em qualquer mercado por si só, sem especificar o horário a partir do qual ele deve começar a esperar por elas.

E, sim, nem em todos os símbolos do mesmo mercado uma nova barra aparece ao mesmo tempo que as outras - quando o primeiro tique aparece. Isso significa que você deve aguardar o aparecimento de novas barras em todos os símbolos por algum tempo.

Bem, sim, em algum lugar e às 11 horas uma barra pode aparecer, mas verificar a partir das 00:00 não é uma opção.

Então, a coisa mais fácil é colocar a verificação de uma nova barra em um segundo cronômetro separado (na maioria das vezes, não faz sentido, na minha opinião).

 
Andrey Khatimlianskii:

Sim, uma barra pode aparecer em algum lugar às 11h, e verificar a partir de 00:00 não é uma opção.

Então, a maneira mais fácil é colocar a verificação de uma nova barra em um segundo cronômetro separado (na maioria das vezes, não faz sentido, na minha opinião).

Na especificação do símbolo, há suas sessões - cotação e negociação. Provavelmente deveríamos tentar começar com elas....