Servicedesk. Reclamações, sugestões.

 

Boa tarde. Hoje, mais uma vez, encontrei o fato de que o Service Desk não está sempre disposto não só a ouvir sobre o problema, mas nem mesmo a ouvi-lo. Vamos começar.

Há alguns dias, escrevi outro pedido para Servicedesk. A essência do pedido é a seguinte (para MT4):

Индикатор находится на ТФ, старше М1. Пытаюсь получить данные через функцию SeriesInfoInteger() с ТФ М1. Функция возвращает нули для свойств SERIES_BARS_COUNT, SERIES_FIRSTDATE, SERIES_SERVER_FIRSTDATE после того, как на М1 образовался новый бар. До того, как образовался новый бар - данные возвращаются корректные. После - нули. 

O segundo problema, de um tipo semelhante. O indicador está na TF MN1. Estou tentando receber dados através da função SeriesInfoInteger() da TF M5. Durante algum tempo a função retorna valores corretos, e então ela simplesmente pára de fazer isso e começa a retornar zeros, embora NENHUM BARRO NOVO tenha sido ABERTO EM M5!

Em ambos os casos, após retornar ao TF do qual estou tentando obter dados e mudar de volta para um TF superior, os dados estão corretos por um tempo, mas então - zeros.

O indicador está na aplicação.

Preciso das propriedades acima da função SeriesInfoInteger() para verificar/carregar o histórico disponível para o TF que não seja o do indicador.

Nenhum dos programadores vai gostar da ambigüidade do seguinte tipo: no início há dados, depois não há dados e estes não podem ser obtidos. Além disso, o(s) usuário(s), para quem o programa é escrito, não gostarão dele. Você pode ver pela mensagem que eu forneci o programa para testar este erro. Além disso, foi fornecido até mesmo um registro:

2015.10.29 14:25:52.663 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 5001, firstDate = 2015.10.26 00:00, serv_firstdate = 2015.08.21 10:59
2015.10.29 14:25:53.113 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 5001, firstDate = 2015.10.26 00:00, serv_firstdate = 2015.08.21 10:59
2015.10.29 14:25:53.419 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 5001, firstDate = 2015.10.26 00:00, serv_firstdate = 2015.08.21 10:59
2015.10.29 14:25:53.930 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 5001, firstDate = 2015.10.26 00:00, serv_firstdate = 2015.08.21 10:59
2015.10.29 14:25:54.487 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 5001, firstDate = 2015.10.26 00:00, serv_firstdate = 2015.08.21 10:59
2015.10.29 14:25:54.795 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 5001, firstDate = 2015.10.26 00:00, serv_firstdate = 2015.08.21 10:59
2015.10.29 14:25:55.412 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 0, firstDate = 1970.01.01 00:00, serv_firstdate = 1970.01.01 00:00
2015.10.29 14:25:55.943 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 0, firstDate = 1970.01.01 00:00, serv_firstdate = 1970.01.01 00:00
2015.10.29 14:25:56.678 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 0, firstDate = 1970.01.01 00:00, serv_firstdate = 1970.01.01 00:00
2015.10.29 14:25:57.169 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 0, firstDate = 1970.01.01 00:00, serv_firstdate = 1970.01.01 00:00
2015.10.29 14:25:57.938 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 0, firstDate = 1970.01.01 00:00, serv_firstdate = 1970.01.01 00:00

Os dados são simplesmente descartados e só podem ser recuperados posteriormente mudando o TF para aquele para o qual a solicitação de dados é feita.

E esta é a resposta que recebo do RS.

Equipe de apoio2015.10.29 10:41
Para obter os dados reais do período-símbolo de outra pessoa, você precisa acessar esses dados mais de uma vez a cada 10 segundos. Ou acessar esses dados de um consultor especializado, por exemplo, usando o iTime (então os dados podem ser acessados pelo menos uma vez a cada 3 minutos)
Equipe de apoio2015.10.29 10:42

Status:AbertoFechado

Você pode ver pela mensagem que o Service Desk (ou alguns de seus funcionários) não se importam em nada com o que os usuários escrevem sobre os erros. Sou solicitado a acessar os dados com mais freqüência do que uma vez a cada 10 segundos!? O registro mostra que os dados são solicitados com muito mais freqüência, a cada tique. Tenho certeza de que este registro ainda nem sequer foi lido. Mas fui sugerido a acessá-los "com mais freqüência" ou a acessar os dados da EA. Gênio. Ah, e o pedido foi imediatamente encerrado, como se eu tivesse recebido ajuda.

Seguindo em frente. Eis a minha resposta:

Alexey Kozitsyn2015.10.29 10:57
Veja os troncos! O apelo continua a cada tique! Os carrapatos são muito mais freqüentes! Da mesma forma no temporizador com uma freqüência de 10 vezes por segundo!
Alexey Kozitsyn2015.10.29 10:57
Status:FechadoAberto

Alexey Kozitsyn2015.10.29 10:59
Sobre os períodos - são apenas períodos para o teste! Se é isso que você quer dizer. Mais uma vez, os dados são solicitados a cada tick!
Alexey Kozitsyn2015.10.29 11:00
Eles podem vir inicialmente e depois parar de fazer isso! Dê uma olhada mais de perto nos troncos.
Alexey Kozitsyn2015.10.29 12:06

Você já identificou o erro?

E a resposta do Service Desk:

Equipe de apoio2015.10.29 12:09

Abra a tabela necessária, então seus dados estarão sempre na memória até que você a feche

Desde a construção do 900, implementamos um sistema agressivo de libertação de memória. Se houver um problema de memória, tudo o que pode ser liberado é liberado.

Eu preciso destas propriedades para selecionar a menor TF apropriada que tenha dados suficientes. Eu, por outro lado, me ofereço para abrir cada gráfico. E não importa quantos instrumentos eu analise ao mesmo tempo, abra todos os gráficos possíveis e você ficará feliz.

Sobre a liberação agressiva e problemas de memória. O terminal não tem problemas de memória. Não há erros nos registros dos terminais. A partir disto, podemos julgar que acabei de ser informado sobre uma situação em que a memória poderia ser liberada. Mas obviamente não é o meu caso. Outro fato é que a Central de Serviços não quer examinar o problema e só quer se livrar dele.

A seguir.

Alexey Kozitsyn2015.10.29 12:27

Você não acha que é melhor refinar a agressiva liberação de memória em vez de dar um toque de carne nos gráficos? E de que problemas de memória você está falando? E sim, por favor, solte, mas torne possível recuperá-los ainda mais sem muletas!

Você já tentou executar o indicador a partir da aplicação? Você entende que os dados vêm do TF de outra pessoa, vem, vem e bam - simplesmente pare de fazer isso!? Este é um comportamento normal?

Aqui está um trecho da documentação:

Para Consultores Especialistas e indicadores personalizados, é melhor usar o modelo de processamento baseado em eventos. Se os eventos onTick() ou OnCalculate() não obtiverem todos os dados necessários, você deve sair do manipulador de eventos, esperando que os dados estejam disponíveis na próxima vez que o manipulador for chamado.

O indicador que citei utiliza exatamente este modelo. Se nenhum dado for recebido, espera-se que os dados cheguem no próximo tick. Mas os dados não vêm mais! De jeito nenhum! Isto é uma contradição de documentação!

Em mql5 tudo funciona como deve ser, por que não pode ser organizado em mql4 da mesma maneira?

E a resposta:

Equipe de apoio2015.10.29 12:45

Não, não tem.

Quanto à documentação - aqui está uma conclusão direta: se você precisa constantemente de dados de algum período-símbolo, então assegure a presença constante desses dados no OnInit. Por exemplo, com simples consulta ao iTime(símbolo_necessário,período_necessário). E mantenha este iTime em cada tic-tac.

Você mesmo está sobrecarregando seu terminal com memória. Portanto, reduza o número de barras no gráfico até o limite necessário. Para fazer o backup dos dados críticos, abra o gráfico com o símbolo-período certo.

Se você não estiver satisfeito com o estado atual das coisas, vamos discuti-lo no fórum. É inútil discutir isso aqui.

O MT5 tem um modelo completamente diferente para a utilização de dados históricos

Equipe de apoio2015.10.29 12:46
Status:Fechado

Em ordem:

Não. Não parece ser.

Apenas grosseiro. Sem explicações, sem comentários.

Com relação à documentação - a conclusão aqui é simples: se você precisar de alguns dados do período-símbolo o tempo todo, certifique-se de que esses dados estejam sempre presentes no OnInit. Por exemplo, com simples consulta ao iTime(símbolo_necessário,período_necessário). E mantenha o iTime em cada tique.

Primeira muleta de senso comum. Inferência direta!? Onde está essa conclusão!? Você realmente acha que todos que escrevem em mql tiraram esta conclusão para si mesmos!? Não especular para as pessoas. As conclusões são tiradas do que está escrito. Para comparação. Na documentação para mql5, na seção "Organização do acesso aos dados" há um exemplo de como o acesso aos dados deve ser organizado. Tudo funciona perfeitamente. Aqui você deve adivinhar que se a função SeriesInfoInteger() retornar 0, você deve chamar a função iTime() para o símbolo/período necessário. Por que não está escrito sobre isso? Por que não podemos simplesmente melhorar a função SeriesInfoInteger() sem estas muletas? Ou pelo menos esclarecê-lo na documentação? Caros desenvolvedores, se você quiser ter menos perguntas, escreva uma vez na documentação em detalhes como e o quê. As pessoas sabem ler!

Você mesmo está sobrecarregando seu terminal com memória.

O que será que você queria me dizer? O terminal pode consumir memória, mas sobrecarregar o terminal com memória é algo novo para mim.

Portanto, reduza o número de barras no gráfico até o limite necessário. Para fazer o backup dos dados críticos, abra o gráfico com o símbolo-período certo.

Quantas barras você acha que eu estava testando o indicador na aplicação? Você parece não se importar, porque nem sequer perguntou. É um número de 5000. É o mínimo possível. E mais uma vez a sugestão de abrir a tabela. Eu peguei, obrigado. Acrescente-o à documentação (se necessário).

E, finalmente.

Se você estiver descontente com a situação atual, vamos levar esta discussão para o fórum. É inútil discutir isso aqui.

O MT5 tem um modelo completamente diferente de utilização de dados históricos

Sim, não estou satisfeito com o atual estado de coisas. Os usuários encontram erros (eu ainda considero o comportamento da função SeriesInfoInteger() um erro) em seu programa. Eles o fazem de graça. E não é que você não queira consertá-los, você nem mesmo quer ouvi-los e olhar os dados fornecidos pelos usuários. E não é a primeira vez, quando os fatos são aceitos com uma vingança, e você não se importa com os erros. Espero que os desenvolvedores ouçam e que haja mudanças positivas no futuro. Sua atitude atual irá despopularizar a atitude para com você e seu produto.

Obrigado a todos pela leitura.

Se alguém gostaria de testar esta característica, o indicador está no apêndice.

Arquivos anexados:
 

Foi dito "vamos levar esta discussão para o fórum".

O que você vai discutir no fórum, minha grosseria ou o problema da limpeza da memória?

 
Slawa:

Foi-lhe dito "vamos trazer esta discussão para o fórum".

O que você vai discutir no fórum, minha rudeza ou o problema de limpeza de memória?

Por isso, coloquei a discussão no fórum. Vamos torná-lo compatível.

Sobre a questão da rudeza. Nem sempre é agradável falar com o Searcydesk. Argumentos acima.

Sobre a função. Eu dei provas de que a função não está funcionando corretamente. Você me ofereceu "muletas". Se você não puder trabalhar corretamente exceto sem muletas, acrescente uma descrição dessas muletas à documentação para que não surjam dúvidas no futuro.

 
Eu gostaria de pedir a opinião dos programadores. Você está satisfeito com o comportamento da função SeriesInfoInteger()? Você está satisfeito com a documentação do idioma?
 
Alexey Kozitsyn:
Peço aos programadores que compartilhem suas opiniões. Você está satisfeito com o comportamento da função SeriesInfoInteger()? Você está satisfeito com a documentação do idioma?

Eu levantei o problema com os dados nos indicadores há muito tempo!

https://www.mql5.com/ru/forum/42180

Tenho certeza de que o problema foi resolvido.

Eles até escreveram sobre isso no resumo do release 1200

17:Terminal: Corrigido um erro que levou ao descarregamento de dados históricos como não utilizados, apesar dos acessos regulares aos dados dos programas MQL5.

Então o problema não foi resolvido?

ФОРТС Прошу помощи
ФОРТС Прошу помощи
  • www.mql5.com
Прошу откомпилировать этот код и "бросить" индикатор на символ MIX-6. - - Категория: автоматические торговые системы
 
Михаил:

Eu levantei o problema com os dados nos indicadores há muito tempo!

https://www.mql5.com/ru/forum/42180

Tenho certeza de que o problema foi resolvido.

Eles até escreveram sobre isso no resumo do release 1200

Terminal: Corrigido um erro, que levou ao descarregamento de dados históricos como não utilizados, apesar dos acessos regulares aos dados dos programas MQL5.

Então o problema não foi resolvido?

Eu quis dizer MT4 neste caso. Mas para a MT5 a questão também é relevante.

 
Alexey Kozitsyn:

Neste caso eu estava me referindo ao MT4. Mas para a MT5 a questão também é relevante.

Eu ainda não atualizei para 1200, não posso verificar se está consertado ou não.

Mas havia um tal bug no MT5

 
Михаил:

Ainda não atualizei para 1200, não posso verificar se está consertado ainda.

Mas havia um tal bug no MT5

Agora está carregando 1204. Veremos.
 
Alexey Kozitsyn:
Agora está baixando 1204. Vamos ver.
Verificado em 1200 ( bx demo ), parece ter sido corrigido :)
 
Se a função MT5SeriesInfoInteger não for usada e em vez disso usar as antigas funções MT4, iBars, iTime, MarketInfo etc., então o problema permanece?
 
Nós o consertaremos em quatro - superando a descarga agressiva de gráficos não utilizados.
Razão: