Erros, bugs, perguntas - página 454

 
Interesting:
Parece-me que teria de traduzir cada elemento da matriz individualmente.

Eu gostaria de alguma ajuda, não de uma reclamação. Deixem-me esclarecer, tentei traduzir usando CharArrayToString com CP_UTF16, mas parece que não é suportado. Talvez eu precise de outra página de código?

Pergunta aos programadores - está escrito na ajuda, que as páginas que não estão nas constantes padrão, podem ser adicionadas manualmente. Todos eles são ou não apoiados?

 
TheXpert:

Eu gostaria de alguma ajuda, não de uma reclamação. Deixe-me ver se percebi bem, tentei usar CharArrayToString da CP_UTF16, mas tenho a sensação de que não é suportado. Talvez eu precise de outra página de código?

Pergunta aos programadores -- na ajuda está escrito, que as páginas que não estão em constantes padrão, podem ser adicionadas manualmente. Todos eles são ou não apoiados?

Interpretei mal a pergunta. Se entendi correctamente a documentação para CP_UTF16, é necessário especificar o código numérico requerido (falta ver qual deles).

Bem, esta é provavelmente uma questão para os criadores.

 
Para além da pergunta - https://www.mql5.com/ru/forum/1111/page455#comment_80246 - à qual ainda gostaria de obter uma resposta, especificarei a situação. Tenho um indicador de múltiplas moedas, estou a testá-lo em MetaQuotes e Alpari. Utilizo-a para Alpari mas com MetaQuotes devolve frequentemente BarsCalculadas para símbolos diferentes e em particular erro 4806 ou apenas 0 barras contadas. Por favor, indiquem-me onde posso ler mais sobre quais podem ser as causas de 4806 e como corrigi-las. Estou a usar código de metaquotas para sincronização de dados - função CheckLoadHistory da página https://www.mql5.com/ru/docs/series/timeseries_access. Os erros do BarsCalculated acontecem depois desta função ter zerado (ou seja, os dados para o cálculo devem parecer estar no lugar). Pode ser de todo confiável ou é necessário algo mais? Para estar do lado seguro, gostaria de esclarecer que o indicador utiliza barras padrão para cálculo, e é a sua prontidão que é verificada através da chamada BarsCalculated.
 
marketeer:
Para além da pergunta - https://www.mql5.com/ru/forum/1111/page455#comment_80246 - à qual ainda gostaria de obter uma resposta, especificarei a situação. Tenho um indicador de múltiplas moedas, estou a testá-lo em MetaQuotes e Alpari. Utilizo-a para Alpari mas com MetaQuotes devolve frequentemente BarsCalculadas para símbolos diferentes e em particular erro 4806 ou apenas 0 barras contadas. Por favor, indiquem-me onde posso ler mais sobre quais podem ser as causas do 4806 e como corrigi-lo. Estou a usar código de metaquotas para sincronização de dados - função CheckLoadHistory da página https://www.mql5.com/ru/docs/series/timeseries_access. Os erros do BarsCalculated acontecem depois desta função ter zerado (ou seja, os dados para o cálculo devem parecer estar no lugar). Pode ser de todo confiável ou é necessário algo mais? Para estar do lado seguro, gostaria de esclarecer que o indicador utiliza as máscaras padrão para o cálculo e é a sua prontidão que é verificada através da chamada BarsCalculated.

Se a resposta não for do BarsCalculated, os dados são sincronizados após uma fracção de segundo intervalo. Apanhado no momento da sincronização, BarsCalculate=0.
 
Swan:
Se a actualização não for de Sami, os dados são sincronizados depois de um período de tempo muito curto. Apanhado no momento da sincronia, BarsCalculate=0.

Obrigado pela informação, embora possa dizer a "eles próprios" que não estou muito satisfeito com tal comportamento - impõe uma incerteza significativa na funcionalidade do software. Por exemplo, já há mais de uma hora atrás pendurei um indicador, no qual indiquei um par de novos tickers - na revisão do mercado estão - se a referência às funções acima mencionadas deveria ter iniciado o descarregamento e a contagem, então tudo deveria ter sido concluído há muito tempo, mas não o foi. Pelo menos seria desejável ver no diário do sistema cada espirro do terminal sobre o carregamento e outras acções "subterrâneas", caso contrário não é claro por que razão "desligou" - a última entrada no "Expert" com o erro 4806, mas no sistema - diz que o terminal está fora de sincronia. Considerando que não há carraças no fim-de-semana, alterei as definições várias vezes, mas ainda não há dados.

Por exemplo, tomei a RTS-9.11, mas a função de actualização da MetaQuotes, mencionada acima, devolve regularmente a carga falhou.

 
Outra questão. Em quarto lugar, poderia escrever func(int array[][]) de matriz multidimensional como um argumento de função. No quinto, o compilador gera um erro de valor de índice inválido - requer que a dimensionalidade seja especificada. Eu escrevi func(int &array[][3]) - sem erro, mas não é uma solução. Como escrever funções então? Por definição, o seu sentido é atribuir um fragmento de código abstracto aplicável a diferentes dados, diferentes matrizes.
 
marketeer:
Outra questão. No Quaternário poderia escrever um func(int array[][]) multidimensional como um argumento de função. No quinto, o compilador gera um erro de valor de índice inválido - requer que a dimensão seja especificada. Eu escrevi func(int &array[][3]) - sem erro, mas não é uma solução. Como escrever funções então? O seu sentido é, por definição, atribuir um fragmento de código abstracto aplicável a diferentes dados, diferentes matrizes.

Isto é o que eu faço:

class cArray2
  {
   double            _Data[];
   int               _ColumnsCount;
   int               _RowsCount;
   ...
   ...
  }

Eu passo objectos desta classe como argumentos.

Por outras palavras, utilizo uma matriz unidimensional como armazém de dados de qualquer dimensão, enquanto eu próprio recalculo os índices "multidimensionais" em índices "unidimensionais" (e vice-versa).

Funciona com uma velocidade bastante aceitável.

As metaquotas podem ser compreendidas. Se não introduzir a restrição "só uma dimensão é indefinida", então não pode gerar código de alta velocidade para aceder a um elemento da matriz na fase de compilação.

 
marketeer:

Obrigado pela informação, embora possa dizer a "eles próprios" que não estou muito satisfeito com tal comportamento - impõe uma incerteza significativa na operacionalidade do software. Por exemplo, já há mais de uma hora atrás pendurei um indicador, no qual indiquei um par de novos tickers - na revisão do mercado estão - se a referência às funções acima mencionadas deveria ter iniciado o descarregamento e a contagem, então tudo deveria ter sido terminado há muito tempo, mas não é assim. Pelo menos seria desejável ver no diário do sistema cada espirro do terminal sobre o carregamento e outras acções "subterrâneas", caso contrário não é claro por que razão "desligou" - a última entrada no "Expert" com o erro 4806, mas no sistema - diz que o terminal está fora de sincronia. Considerando que não há carraças no fim-de-semana, alterei as definições várias vezes, mas ainda não há dados.

Por exemplo, tomei a RTS-9.11, mas a função de actualização de MetaQuotes, mencionada na ligação, devolve regularmente Carga falhou.

Referência:

O acesso aos dados indicadores e às séries cronológicas é implementado independentemente do facto de os dados solicitados estarem prontos (o chamado acesso assíncrono ). Isto é crítico para o cálculo de indicadores personalizados, pelo que na ausência dos dados solicitados as funções comoCopiar...() devolvem imediatamente um erro.

Não há ticks no fim-de-semana, o indicador é iniciado e um erro é devolvido...

imho, existe apenas uma solução, ou seja, a de executar o Expert Advisor adicional, que carrega o histórico solicitado...

Isto é, se os dados estiverem disponíveis para o Consultor Especialista, estarão disponíveis para o indicador. Ainda não a verifiquei, a solução parece tortuosa.


Vou repetir a minha pergunta:

Ajuda:

A função Sleep() não pode ser chamada a partir deindicadores personalizados porque os indicadores são executados no fio da interface e não devem abrandá-la.

Não pode, ou se realmente quiser, pode, mas com cuidado? :)


Há um problema com o acesso aos dados de outro símbolo a partir do indicador.

se não houver carrapatos)
ou seja, não há forma de o indicador recuperar dados no fim-de-semana, nem o seu TF, nem o seu símbolo...
 
Swan:
ou seja, não há maneira de o indicador obter os seus dados no fim-de-semana, nem o seu TF, nem o seu símbolo...
Na minha opinião, todos estes são insectos. As carraças são carraças, mas nada impede (o terminal) de carregar dados e calcular índices na ausência de carraças. Mais interessante é que o mesmo código funciona de forma diferente em diferentes servidores de demonstração. Por exemplo, em Alpari tanto o ouro como a prata são puxados para cima, e o índice é recalculado. Portanto, o problema parece ser mais vasto do que isso.
 
MetaDriver:

Os Metacvots são compreensíveis. A menos que a restrição "apenas uma dimensão seja indefinida" seja imposta, então não se pode gerar código de alta velocidade para aceder a um elemento da matriz em tempo de compilação.

Bem, não consigo compreender ;-). Há muito tempo atrás, sugeri que a quinta tinha de ser tornada o mais compatível possível com a quarta (quanto à sintaxe e suporte de funções API anteriores, em particular). Claro que novas funcionalidades, como a geração rápida de código, poderiam ser adicionadas, mas isto poderia ser feito para novas construções de sintaxe (restrições) - por exemplo, com estes parâmetros-arrays: quem quer optimização da velocidade - especificar as dimensões, e quem quer rápida e facilmente portar o código antigo - deixá-lo como está, e o inferno com o facto de que o código seria mais lento. Haveria um compromisso entre rapidez e conveniência, ou poderia oferecer assembler como mql5. ;-).