Perguntas de um "boneco" - página 68

 

x100intraday:

O principal que quero saber: é possível preencher directamente buffers de tempo como buffers de preço (sem recorrer ao CopyTime e outras funções regulares de copiar para uma matriz), e como, e se não, porquê?

2. é realmente necessário ter outro par de amortecedores para armazenar segundos desde o início de 1970, mas com tipo não datado, mas algum duplo ou longo, por exemplo, e nos momentos necessários para converter através do TimeToString para o formato de tempo como string literal?

1. impossível. com "porquê? - aos criadores.

No seu caso, esta é a solução mais simples. (Garantido para trabalhar.) Uma vez que levanta a questão relativa ao enchimento de amortecedores semelhantes aos de preço.

Se eu fosse eu, tentaria evitar tal desperdício de memória a nível algorítmico, e em caso algum criaria buffers com dados úteis preenchidos a 3%.

 
MetaDriver:

Se eu fosse eu, tentaria evitar este desperdício de memória a nível algorítmico, e não criar buffers com 3% de dados utilizáveis.

Bem, aqui vem a explicação da pergunta: https://www.mql5.com/ru/forum/1111/page529#comment_101059 com pelo menos uma resposta inteligível e não incompreensível, embora muito pelo contrário. O interesse está em alta...
 
x100intraday:

sim, bada))

"Constantes de data e hora... " e "...pode ser representado como uma corda literal".

pode ou não ser representado... é para dados de entrada/saída no formulário habitual de data/hora.

Além disso, não podemos associar matrizes deste tipo com buffers indicadores (e não há necessidade de?), não podemos aplicar SetIndexBuffer a matrizes deste tipo de dados por razões bem conhecidas.

não há nada que impeça o tipo de data/hora de estar no tampão indicador (é desejável).

E não o fazemos.

E em vão)

Compilar o código resultante. Recebemos o aviso"truncagem de valor constante" em relação às cordas com =EMPTY_VALUE(estamos tristemente surpreendidos) e um erro no relatório do perito do terminal: "Array out of range " em relação àsmesmas cordas (ficamos finalmente perturbados). Parece que EMPTY_VALUE não quercaber no tipo de data/hora , enquanto o tamanho da matriz permanece zero. AlterandoEMPTY_VALUE para 0, o erro desaparece mas a matriz ainda tem tamanho zero.

EMPTY_VALUE é do tipo duplo.

Seria mais fácil com um tampão indicador - não precisamos de determinar o tamanho da matriz.

Outra coisa estranha é que o tamanho de ExtUpperBuffer e ExtLowerBuffer não é zero, significa que enchem, mas não aparecem fractais. Porque deveria ser assim?

eh, não sei).

O principal que me interessa: é possível preencher os amortecedores de tempo directamente semelhantes aos amortecedores de preço (sem recorrer ao CopyTime e a outras funções regulares de copiar para a matriz), e como, e se não, porquê? Realmente, para este fim tenho de criar outro par de amortecedores para armazenar segundos desde o início de 1970, mas com tipo não datado, mas algum duplo ou longo, por exemplo, e em momentos necessários para converter através do TimeToString para o formato de tempo como string literal?

O acesso a dados como datetime é semelhante ao acesso a dados de preços.

A data é essencialmente a mesma int/long.

P.S.: quem é demasiado preguiçoso para reproduzir o código Fractals.mq5, basta dizer-me, como se armazenam os dados de tempo específicos calculados (sem chamar os cabos de indicadores incorporados e trabalhar com eles)?

é o mesmo que com os dados inteiros, int/datetime/long é o mesmo.

 
Swan:

sim, badaadaada))

nada impede que o tipo de data/hora esteja no tampão indicador (isso é desejável).

E em vão)

É mais fácil com o tampão indicador - não é necessário determinar o tamanho da matriz.

E o que é que estou a fazer exactamente mal? Tudo é descrito em pormenor, o código fonte é padrão, testado ao longo do tempo, o mais simples! As modificações são simples e óbvias... Não consigo especular na minha mente enevoada. Quando estou preso em algo, mais vale chamar um mecânico de automóveis com uma chave em forma de lua crescente...

E qual é o feitiço rúnico para ligar as arrays de data e hora aos amortecedores indicadores? Mais uma vez:


SetIndexBuffer

Liga o tampão indicador especificado a uma matriz dinâmica unidimensional de tipo duplo, declarada globalmente.

 
x100intraday:

E o que é que estou a fazer exactamente mal? Afinal, descrevi tudo em pormenor, o código fonte é geralmente padrão, testado ao longo do tempo, o mais simples! As modificações são simples e óbvias... Estou perdido na especulação da minha mente enevoada. Quando estou preso em algo, mais vale chamar um mecânico de automóveis com uma chave em forma de lua crescente...

E qual é o feitiço rúnico para ligar as arrays de data e hora aos amortecedores indicadores? Mais uma vez:


SetIndexBuffer

Liga o tampão indicador especificado a uma matriz dinâmica unidimensional de tipo duplo, declarada globalmente.

Não precisa desta data. Escrever tudo numa matriz dupla e convertê-lo para a data antes de o utilizar (se necessário).

Basicamente, a única diferença entre a data/hora e o dobro está na apresentação. É possível converter sem perdas o tempo escrito em dobro para a data.

Ambos são de 8 tipos de bytes.

 
x100intraday:

E o que é que estou a fazer exactamente mal? Afinal, descrevi tudo em pormenor, o código fonte é geralmente padrão, testado ao longo do tempo, o mais simples! As modificações são simples e óbvias... Estou perdido na especulação da minha mente enevoada. Quando fico preso em algo, quero um mecânico de automóveis com uma chave em forma de lua crescente.

Só posso adivinhar os detalhes do código com as alterações...

E como usar o feitiço rúnico para ligar matrizes do tipo data/hora a amortecedores indicadores? Mais uma vez:


SetIndexBuffer

Liga o tampão indicador especificado a uma matriz dinâmica unidimensional de tipo duplo, declarada globalmente.

Urain já lhe respondeu. Bem, para que o compilador não jure, algo como isto:

double ExtUpperTimeBuffer[];//обьявляем
...
ExtUpperTimeBuffer[xz0]=(double)time[xz1];//присваиваем
...
datetime XZ=(datetime)ExtUpperTimeBuffer[xz2];//юзаем
 

Por isso... Sim...

Nada de pioneiro, mas o solo está firmemente plantado, por assim dizer.

Obrigado a todos pelos pontapés medicinais. Vou tentar...

 
x100intraday:

Obrigado a todos pelos pontapés medicamentosos.

E pontapés de boa sorte : D
 

Existe um análogo interno da matriz de funções da biblioteca.Add()?

P.S.: se não, dar um ano de fornecimento de comprimidos para dormir.

 
x100intraday:

Existe um análogo interno da matriz de funções da biblioteca.Add()?

P.S.: se não, dar um ano de fornecimento de comprimidos para dormir.

Porque não armazenar data em indicador...... ou buffer...... tipo duplo

Muitos pontos adicionados, caso contrário aparece algum tipo de ligação.

double time[10];

time[0] = (double) D'3000.12.31 23:59';
time[1] = (double) D'2030.12.31 23:59';

Print(TimeToString((datetime)time[0]));
Print(TimeToString((datetime)time[1]));

Tudo converte correctamente, sem erros

Документация по MQL5: Основы языка / Типы данных / Вещественные типы (double, float)
Документация по MQL5: Основы языка / Типы данных / Вещественные типы (double, float)
  • www.mql5.com
Основы языка / Типы данных / Вещественные типы (double, float) - Документация по MQL5