Servicedesk. Reclamações, sugestões. - página 7

 
Ilya Malev:
Acabo de encontrar seu problema já no MT5 em um indicador, sem sair de um loop OnTimer, eu verifico as séries temporais em outro símbolo/período (não atual) - a função me diz que ele está construído e me dá o número correto de barras. Imediatamente depois chamo outra função para construir o indicador - dentro desta função, chamada da mesma chamada do OnTimer, as séries de tempos conseguem ser descarregadas e o SeriesInfoInteger retorna zeros. Tive que incorporar uma verificação cíclica adicional, de modo que tudo se constrói a si mesmo sem carrapatos de entrada.

Qual é a construção do terminal MT5? Mikhail escreveu que o MT5 build 1200 deve ser bom:

Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos

Balcão de serviço. Reclamações, sugestões.

Mikhail, 2015.10.29 17:46

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 da versão 1200

17: Terminal: Corrigido um bug que fazia com que os dados históricos fossem descarregados como não utilizados, apesar dos acessos regulares aos dados dos programas MQL5.

E se a construção for nova, mas o erro persistir - vá ao servicedesk com provas!

 
Alexey Kozitsyn:

Qual é a construção do terminal MT5? Mikhail escreveu que o MT5 build 1200 deve ser bom:

Se a construção é nova e o erro ainda está lá, vá ao Service Desk com a prova!

A construção é a mesma que a 1200/64. Para reproduzir o erro, eu preciso simular a situação que eu tinha em um produto bastante complexo, que não posso enviar para a mesa. Fá-lo-ei assim que estiver livre do trabalho por um tempo.
 

O iniciante do tópico recebeu conselhos sobre seu problema na primeira resposta, que ele, o iniciante do tópico, ignorou.

Stanislav Starikov| 10.29 12:41

Para obter dados reais do período do símbolo de outra pessoa, você precisa acessar esses dados com mais freqüência do que uma vez a cada 10 segundos. Ou acessar esses dados do Expert Advisor, por exemplo, usando o iTime (então os dados podem ser acessados pelo menos uma vez a cada 3 minutos)


O iniciante do tópico obviamente viu este conselho, pois há algum código comentado em seu indicador que ele apresentou aqui

         //if( bars_count == 0 || firstDate == 0 || serv_firstDate == 0 )
         //     {
         //      Print( "Подкачка iTime()" );
         //      datetime tm = iTime( _Symbol, period, 0 );
         //     }

Se você inserir a chamada incondicional iTime(_Symbol,period,0) no OnInit e no início do OnCalculate, você não terá nenhum problema descrito acima

A SeriesInfoInteger simplesmente coleta as informações já existentes sem chamar a troca de dados, e isso é lógico.

 
Slawa:

O iniciante do tópico recebeu conselhos sobre seu problema na primeira resposta, que ele, o iniciante do tópico, ignorou.

Stanislav Starikov| 10.29 12:41

Para obter dados reais do período do símbolo de outra pessoa, você precisa acessar esses dados com mais freqüência do que uma vez a cada 10 segundos. Ou acessar esses dados do Expert Advisor, por exemplo, usando o iTime (então os dados podem ser acessados pelo menos uma vez a cada 3 minutos)


O iniciante do tópico obviamente viu este conselho, pois há algum código comentado em seu indicador que ele apresentou aqui

Se você inserir a chamada incondicional iTime(_Symbol,period,0) no OnInit e no início do OnCalculate, você não terá nenhum problema descrito acima

A SeriesInfoInteger simplesmente coleta as informações já existentes sem chamar a troca de dados, e isso é lógico.

Vyacheslav, a quem você está se dirigindo agora? Eu? Ou para Ilya?

Se você está se dirigindo a Ilya, ele já está falando do mql5. Por favor, leia atentamente antes de responder. Já lhe disse mais de uma vez que está com pressa de responder sem entrar em detalhes.

Vi seus conselhos, o código comentado o confirma, obrigado, ajudou. Como Renat disse que a descarga agressiva de dados será corrigida, não há necessidade de continuar discutindo o mql4.

Mas se a mesma situação continuar em mql5, embora deva ser corrigida a partir da construção 1200, então o que fazer?

Mais uma vez, se você (os desenvolvedores) não vão alterar nada em mql4, acrescente à documentação que a SeriesInfoInteger() apenas reúne as informações existentes, e pronto! Todas as perguntas desaparecerão, ou você pode simplesmente meter seu nariz na documentação!

 
Alexey Kozitsyn:

Vyacheslav, com quem você está falando agora? Eu? Ou para Ilya?

Desde que o iTime foi mencionado, trata-se obviamente do MT4. Ainda não dei um exemplo de código específico para me responder.
 
Ilya Malev:
Desde que o iTime foi mencionado, é claramente sobre o MT4. Ainda não dei um exemplo de código específico para me responder.
Eu entendi isso, mas é mais provável que você tenha sido abordado. Mas você escreveu sobre erro em mql5.
 
Alexey Kozitsyn:
Eu entendi isso, mas provavelmente foi dirigido a você também. Mas você escreveu sobre erro em mql5.
Eu não sou o iniciador do tema :)
 
Ilya Malev:
Eu não sou o iniciador do tema :)
Sim, mas o cargo foi como explicar a você o que eu, na opinião de Vyacheslav, não compreendi.
 
Alexey Kozitsyn:
Sim, mas o correio foi como explicar a você o que eu, de acordo com Vyacheslav, não peguei.

Acho que essa é a maneira de falar com você :)

Vou voltar ao meu problema e fornecer um código de verificação. A menos que algo tenha sido consertado na construção 1210. Até agora, fiz uma verificação cíclica e segui em frente, sem tempo para parar.

 
Ilya Malev:
Escreva então o resultado de suas experiências com a história no MT4)

Começou a experimentar o carregamento da história a partir do zero. Isto é, eu apago todo o histórico pelo símbolo e inicio o terminal. Ajuste do terminal barras máximas na janela = 5000.

Se usar um script semelhante ao da Data Access Organization no MT5, você pode ver que o histórico é carregado até o número máximo de barras ou até a última data no servidor.

Usando um esquema semelhante no MT4, os dados não são carregados. Isto é, inicialmente estão disponíveis aproximadamente 2050, e para obter mais história você precisa rolar o gráfico até a profundidade da história.

Também notei uma peculiaridade. Ao rolar, se novas barras forem carregadas, a pré-calculada é zerada para 0 (funciona como botão "refresh").

Prezados desenvolvedores. Comente se houver alguma forma de trocar o histórico sem usar a rolagem de gráficos (MT4!).

Razão: