Il n'est pas non plus nécessaire de recréer l'objet à chaque tic-tac, ce qui inonderait le journal des erreurs d'un message 4200 "Object already exists" (objet déjà existant). Il est donc préférable de créer l'objet une fois dans la fonction "on init", puis de le déplacer ultérieurement à la date souhaitée.
Marco vd Heijden: De plus, il n'est pas nécessaire de recréer l'objet à chaque tick, ce qui inonderait le journal d'erreurs avec un 4200 Object already exists, donc à la place, créez l'objet dans la fonction on init une fois et ensuite vous pouvez le déplacer à la date désirée plus tard.
Cependant, le problème que je rencontre actuellement est de convertir l'information (date) que je récupère du fichier et de l'utiliser pour dessiner les lignes.
Dans le code, le fichier est enregistré sous # Lines dans la section des fichiers MT4 et la date enregistrée est par exemple 2019.05.18 05:30:00.
première étape, j'enlève les 3 derniers chiffres de la date et je la convertis en 2019.05.18 05:30 ... maintenant, l'étape suivante est ce que je ne parviens pas à faire pour que l'heure soit au format 'D'.
Dans les deux cas, la ligne est créée à 1970.01.01 00:00. Le problème est donc de convertir la date du fichier en quelque chose de significatif que MT4 peut utiliser pour créer la ligne V.
Je joins le code, peut-être pouvez-vous repérer mon erreur ... dans le code, j'ai créé deux lignes mais aucune des lignes n'est créée à la date que je récupère du fichier.
vous faites cela mal en écrivant la date entre guillemets
comme elle l'est :
D'2019.05.18 05:30'
Je fais cela parce que je convertis le texte dans un format de date commeWilliam Roeder l'a illustré ci-dessus. Je ne suis pas sûr de l'erreur que j'ai commise puisque j'ai enregistré la date correctement et l'ai convertie au format 'D', mais je ne peux toujours pas créer la ligne, bien que si j'ai copié la date du fichier et créé manuellement une ligne, la date est correcte.
Je pense que vous aurez plus de chance de sauvegarder et de lire le temps sous forme de valeurs entières longues, comme les secondes depuis l'époque, au lieu de ces conversions de chaînes de caractères en dates.
Marco vd Heijden: Je pense que vous aurez plus de chance de sauvegarder et de lire le temps en tant que valeurs entières longues comme les secondes depuis l'époque au lieu de ces conversions de chaîne de caractères en date.
La date est sauvegardée avec les secondes, par exemple c'est l'heure tirée du fichier 2019.05.19 15:00:00
Cependant, lors de mes tests, j'ai découvert que si j'utilisais la date avec les secondes, cela créerait la ligne en1970.01.01, c'est pourquoi j'ai supprimé les secondes, mais je n'ai toujours pas réussi à créer le fichier à l'emplacement correct de la date.
Dans ce cas, je pense que vous pouvez également examiner la structure temporelle :
structMqlDateTime
{
int year; // Year int mon; // Month int day; // Day int hour; // Hour int min; // Minutes int sec; // Seconds int day_of_week; // Day of week (0-Sunday, 1-Monday, ... ,6-Saturday) int day_of_year; // Day number of the year (January 1st is assigned the number value of zero)
};
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
De plus, il n'est pas nécessaire de recréer l'objet à chaque tick, ce qui inonderait le journal d'erreurs avec un 4200 Object already exists, donc à la place, créez l'objet dans la fonction on init une fois et ensuite vous pouvez le déplacer à la date désirée plus tard.
pour éviter ce problème :
Vous pouvez également vérifier en amont si l'objet existe déjà :
ObjectFind(...Marco, Paul
Merci beaucoup pour votre réponse et votre aide.
Cependant, le problème que je rencontre actuellement est de convertir l'information (date) que je récupère du fichier et de l'utiliser pour dessiner les lignes.
Dans le code, le fichier est enregistré sous # Lines dans la section des fichiers MT4 et la date enregistrée est par exemple 2019.05.18 05:30:00.
première étape, j'enlève les 3 derniers chiffres de la date et je la convertis en 2019.05.18 05:30 ... maintenant, l'étape suivante est ce que je ne parviens pas à faire pour que l'heure soit au format 'D'.
J'ai essayé ce qui suit
mais cela n'a pas fonctionné, j'ai donc converti la chaîne de caractères en heure.
Dans les deux cas, la ligne est créée à 1970.01.01 00:00. Le problème est donc de convertir la date du fichier en quelque chose de significatif que MT4 peut utiliser pour créer la ligne V.
Je joins le code, peut-être pouvez-vous repérer mon erreur ... dans le code, j'ai créé deux lignes mais aucune des lignes n'est créée à la date que je récupère du fichier.
vous faites cela mal en écrivant la date entre guillemets
comme elle l'est :
D'2019.05.18 05:30'
Les deux sont des dates. Tout comme
sont tous deux des doubles.vous faites cela mal en écrivant la date entre guillemets
comme elle l'est :
D'2019.05.18 05:30'
Je fais cela parce que je convertis le texte dans un format de date commeWilliam Roeder l'a illustré ci-dessus. Je ne suis pas sûr de l'erreur que j'ai commise puisque j'ai enregistré la date correctement et l'ai convertie au format 'D', mais je ne peux toujours pas créer la ligne, bien que si j'ai copié la date du fichier et créé manuellement une ligne, la date est correcte.
Je pense que vous aurez plus de chance de sauvegarder et de lire le temps en tant que valeurs entières longues comme les secondes depuis l'époque au lieu de ces conversions de chaîne de caractères en date.
La date est sauvegardée avec les secondes, par exemple c'est l'heure tirée du fichier 2019.05.19 15:00:00
Cependant, lors de mes tests, j'ai découvert que si j'utilisais la date avec les secondes, cela créerait la ligne en1970.01.01, c'est pourquoi j'ai supprimé les secondes, mais je n'ai toujours pas réussi à créer le fichier à l'emplacement correct de la date.
Dans ce cas, je pense que vous pouvez également examiner la structure temporelle :
Vous pouvez utiliser
TimeToStruct()Fonction comme suit :
Ensuite, vous pouvez extraire toutes les valeurs souhaitées à partir de cela.
Il s'agit de valeurs entières, donc pas de chaînes de caractères à manipuler.