Questions d'un "mannequin - page 68

 

x100intraday:

La principale chose que je veux savoir : est-il possible de remplir les tampons de temps directement comme les tampons de prix (sans avoir recours à CopyTime et autres fonctions habituelles de copie dans un tableau), et comment, et si non, pourquoi ?

Est-il vraiment nécessaire d'avoir une autre paire de tampons pour stocker les secondes depuis le début de 1970, mais avec le type non pas datetime, mais un double ou un long, par exemple, et au moment nécessaire pour convertir par TimeToString au format de temps comme chaîne littérale?

1. impossible. avec "pourquoi ?" - aux développeurs.

Dans votre cas, c'est la solution la plus simple. (Fonctionnement garanti.) Puisque vous soulevez la question du remplissage de tampons similaires à ceux des prix.

Si j'étais moi, j'essaierais d'éviter un tel gaspillage de mémoire au niveau algorithmique, et en aucun cas je ne créerais des tampons contenant des données utiles remplis à 3%.

 
MetaDriver:

Si j'étais moi, j'essaierais d'éviter ce gaspillage de mémoire au niveau algorithmique, et de ne pas créer de tampons contenant 3 % de données utilisables.

Eh bien, voici la question-explication : https://www.mql5.com/ru/forum/1111/page529#comment_101059 avec au moins une réponse intelligible et non incompréhensible, bien que tout à fait contraire. L'intérêt est grand...
 
x100intraday:

ouais, bada))

"Constantes de date et d'heure... " et " ...peut être représenté par une chaîne littérale".

peut ou non être représenté... il s'agit de données d'entrée/sortie sous la forme habituelle de date/heure.

De plus, nous ne pouvons pas associer les tableaux de ce type à des tampons indicateurs (et ce n'est pas nécessaire ?), nous ne pouvons pas appliquer SetIndexBuffer aux tableaux de ce type de données pour des raisons bien connues.

rien n'empêche le type datetime d'être dans le tampon de l'indicateur (c'est souhaitable).

Et nous ne le faisons pas.

Et en vain)

Compilez le code résultant. Nous obtenons l'avertissement"troncature de la valeur constante" pour les chaînes de caractères avec =EMPTY_VALUE(nous sommes tristement surpris) et une erreur dans le rapport Expert du terminal : "Array out of range " pour les mêmes chaînes de caractères (nous nous énervons enfin). Il semble queEMPTY_VALUE ne veuille pasentrer dans le type datetime , alors que la taille du tableau reste nulle. En remplaçantEMPTY_VALUE par 0, l'erreur disparaît mais le tableau atoujours une taille nulle.

EMPTY_VALUE est de type double.

Ce serait plus facile avec un tampon indicateur - nous n'avons pas besoin de déterminer la taille du tableau.

Une autre chose étrange est que la taille de ExtUpperBuffer et ExtLowerBuffer est non nulle, cela signifie qu'ils se remplissent, mais que les fractales n'apparaissent pas. Pourquoi en serait-il ainsi ?

eh, je ne sais pas).

La principale chose qui m'intéresse : est-il possible de remplir les tampons temporels directement de la même manière que les tampons de prix (sans avoir recours à la CopyTime et aux autres fonctions habituelles de copie dans le tableau), et comment, et si non, pourquoi ? Vraiment, dans ce but, je dois créer une autre paire de tampons pour stocker les secondes à partir du début de 1970, mais avec le type non pas datetime, mais un double ou long, par exemple, et dans les moments nécessaires pour convertir par TimeToString au format de temps comme chaîne littérale?

L'accès à des données comme datetime est similaire à l'accès à des données de prix.

datetime est essentiellement la même chose que int/long.

P.S. : si vous êtes trop paresseux pour reproduire le code de Fractals.mq5, dites-moi simplement comment vous stockez les données temporelles spécifiques calculées (sans appeler les handles des indicateurs intégrés et travailler avec eux) ?

c'est la même chose qu'avec les données entières, int/datetime/long est le même.

 
Swan:

ouais, badaada))

rien n'empêche le type datetime d'être dans le tampon de l'indicateur (c'est souhaitable).

Et en vain)

C'est plus facile avec le tampon indicateur - vous n'avez pas besoin de déterminer la taille du tableau.

Et qu'est-ce que je fais de mal exactement ? Tout est décrit en détail, le code source est standard, éprouvé, le plus simple ! Les modifications sont simples et évidentes... Je suis incapable de spéculer dans mon esprit obscurci... Quand je suis coincé sur quelque chose, je pourrais aussi bien appeler un mécanicien automobile avec une clé à molette...

Et quel est le sort runique pour lier les tableaux de dates aux tampons d'indicateurs? Encore une fois :


SetIndexBuffer

Lie le tampon indicateur spécifié à un tableau dynamique unidimensionnel de type double, déclaré globalement.

 
x100intraday:

Et qu'est-ce que je fais de mal exactement ? Après tout, j'ai tout décrit en détail, le code source est généralement standard, éprouvé, le plus simple ! Les modifications sont simples et évidentes... Je suis perdu dans les spéculations de mon esprit obscurci... Quand je suis coincé sur quelque chose, je pourrais aussi bien appeler un mécanicien automobile avec une clé à molette...

Et quelle est la rune pour lier les tableaux de dates aux tampons d'indicateurs ? Encore une fois :


SetIndexBuffer

Lie le tampon indicateur spécifié à un tableau dynamique unidimensionnel de type double, déclaré globalement.

Vous n'avez pas besoin de cette date. Écrivez tout dans un tableau double et convertissez-le en date avant de l'utiliser (si nécessaire).

En fait, la seule différence entre datetime et double réside dans la présentation. Vous pouvez convertir sans perte le temps écrit en double en datetime.

Les deux sont des types de 8 octets.

 
x100intraday:

Et qu'est-ce que je fais de mal exactement ? Après tout, j'ai tout décrit en détail, le code source est généralement standard, éprouvé, le plus simple ! Les modifications sont simples et évidentes... Je suis perdu dans les spéculations de mon esprit obscurci... Quand je suis coincé sur quelque chose, je veux un mécanicien avec une clé à molette...

Je ne peux que deviner les détails du code avec les changements...

Et comment utiliser le sort runique pour lier des tableaux de type date-heure à des tampons indicateurs ? Encore une fois :


SetIndexBuffer

Lie le tampon indicateur spécifié à un tableau dynamique unidimensionnel de type double, déclaré globalement.

Urain a déjà répondu à cette question. Eh bien, pour que le compilateur ne jure pas, quelque chose comme ceci :

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

Alors... Ouais...

Rien de révolutionnaire, mais le sol est fermement planté, pour ainsi dire.

Merci à tous pour le coup de pied médicinal. Je vais essayer...

 
x100intraday:

Merci à tous pour les coups de pied dans les médicaments.

Et des coups de pied de la bonne fortune : D
 

Existe-t-il un analogue interne de la fonction de la bibliothèque array.Add() ?

P.S. : sinon, donnez une année de somnifères.

 
x100intraday:

Existe-t-il un analogue interne de la fonction de la bibliothèque array.Add() ?

P.S. : sinon, donnez une année de somnifères.

Pourquoi ne pas stocker la date dans l'indicateur......ou le tampon...... type double

Beaucoup de points ajoutés, sinon une sorte de lien apparaît.

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]));

Tout est converti correctement et sans erreur

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