Je suis complètement perdue - page 4

 
ydrol:

Le fuseau horaire pour datetime (secondes après 1970) est basé sur UTC. Tout comme le temps Unix. C'est UnixTime - le temps Unix 64 bits.

datetime - datetime = long (durée en secondes)

datetime +/- secondes(long) = datetime(autre date)

datetime +/- secondes(int) = datetime(autre date)


Comment spécifier une date en GMT ?
 
ydrol: Le fuseau horaire pour datetime (secondes après 1970) est basé sur UTC.
Faux. Le fuseau horaire est l'heure du serveur du courtier. Cela dépend du courtier que vous utilisez.
FMIC: C'est vous qui êtes le TROLL ici ! C'est mon dernier message sur ce fil ! Vous n'en valez pas la peine.

S'il vous plaît, ne nourrissez pas le troll.

Lorsque vous répondez, vous donnez du pouvoir au troll. Lorsque vous ignorez le troll, il a besoin d'attention et finit par mourir.

 
FMIC: c'est vous qui êtes le TROLL ici ! C'est mon dernier message sur ce fil ! Vous ne valez pas la peine de faire des efforts.

Je pense que vous avez fait une excellente contribution. Vos posts sont concis et bien enseignés et vous recevez beaucoup de résolutions de "merci" pour vos efforts.

Oui, je pense que vous avez fait tout ce que vous pouviez pour ce type.

 
ah oui pour la plupart, dans mql le fuseau horaire dépend de l'endroit d'où vous obtenez l'heure. qui est généralement le courtier. j'avais oublié cela, merci pour le gros Faux heads up -lol
 
RaptorUK:
Comment spécifier une date en GMT ?

J'ai oublié que mql4 utilise un concept de temps erroné. Je reconnais la question rhétorique :-) le fuseau horaire dépend de l'endroit d'où il provient. D'où tous les problèmes car il y a plusieurs sources : courtier, ordinateur, backtesting bla bla bla.
 
ydrol:
whoop oublié que mql4 utilise un concept de temps cassé, . Je reconnais la question rhétorique :-) le fuseau horaire dépend de l'endroit d'où il provient. D'où tous les problèmes car il y a de multiples sources : courtier, ordinateur, backtesting bla bla.
Je suis juste content que vous ayez compris la question rhétorique.
 

J'avais peur que les règles de promotion des types de données fonctionnent de cette façon. Ok, donc :

datetime - datetime = long (durée en secondes)

datetime +/- secondes(long) = datetime(autre date)

datetime +/- secondes(int) = datetime(autre date)

Mais si je dis X=Y-Z, ou (Y-Z)/60, ou quelque chose comme ça, où X est déjà déclaré comme un long ou un int, et Y et Z sont des dates, est-ce très, très mauvais ? Et si c'est le cas, est-ce que static_cast peut tout régler ?

Raptoruk, ce n'est pas indépendant du fuseau horaire. Bien sûr, la différence entre 14 h et 15 h est de 3600 dans un fuseau horaire donné. Mais que se passe-t-il si je sais que la négociation s'arrête à 17 heures, heure de l'Est, le vendredi, mais que je ne sais pas dans quel fuseau horaire se trouve l'heure 0 (minuit le 1er janvier 1970) ? Nous avons alors un problème, n'est-ce pas ? Le 1er janvier 1970 était donc un jeudi. Si le temps 0 est en GMT, alors la négociation s'arrête 46 heures après, soit 165600 modulo 604800. En d'autres termes, avec 604800 secondes dans une semaine, j'utilise l'opération arithmétique X%604800 pour le reste en divisant par 604800, et le trading s'arrête à 165600. Cependant, si le courtier se trouve à deux fuseaux horaires à l'est et que sa camelote est horodatée avec une valeur supérieure de 7200, alors la négociation s'arrête lorsque le time%604800 est de 172800, et non de 165600.

Il semble qu'il y ait une incertitude sur les indices de temps déclarés. Je suppose que je dois faire en sorte que mon code calcule les heures modulo 604800 auxquelles la négociation commence et s'arrête après tout, juste pour être sûr. Je pense que je regarde quelque chose comme iTime('USDJPY',60,X) et que je trouve des écarts de 48 heures. Je peux compter sur iTime comme étant l'heure d'ouverture, le DÉBUT de l'heure, n'est-ce pas ? En d'autres termes, le trading s'arrête 1 heure après le dernier indice horaire avant un gap de 2 jours, et il reprend exactement au début du premier après le gap, et ensuite l'ajout de multiples de 604800 change simplement la semaine. Cependant, il y aurait des complications supplémentaires, comme par exemple si dans une semaine, il manque la dernière heure, ou la première heure. Peut-être utiliser iTime('USDJPY',1,X) pour que je sois décalé de quelques minutes au maximum.

Oh wow, beaucoup de messages déclenchés si rapidement par celui-là. Juste pour que quelqu'un d'autre sache, je suppose que raptoruk est ok après tout, mais un tas d'invectives n'est pas le bienvenu, donc si vous n'êtes pas ydrol ou raptoruk ou quelqu'un de nouveau avec quelque chose de nouveau à dire, arrêtez simplement de poster, je ne suis pas un troll parce que je ne me soucie pas de vos états émotionnels d'une manière ou d'une autre et si vous avez quelque chose de plus à jeter autour, sachez que cela tombe sur des oreilles sourdes.

 
zortharg:

J'avais peur que les règles de promotion des types de données fonctionnent de cette façon. Ok, donc :

datetime - datetime = long (durée en secondes)

datetime +/- secondes(long) = datetime(autre date)

datetime +/- secondes(int) = datetime(autre date)

Mais si je dis X=Y-Z, ou (Y-Z)/60, ou quelque chose comme ça, où X est déjà déclaré comme un long ou un int, et Y et Z sont des dates, est-ce très, très mauvais ? Et si c'est le cas, est-ce que static_cast va tout régler ?

Raptoruk, ce n'est pas indépendant du fuseau horaire.

OK, quel fuseau horaire correspond à une date de 0 ?

Mais que faire si je sais que la négociation s'arrête à 17 heures, heure de l'Est, le vendredi, mais que je ne sais pas dans quel fuseau horaire se trouve l'heure 0 (minuit le 1er janvier 1970) ? Nous avons alors un problème, n'est-ce pas ?

Non... peut-être que vous le savez, mais pas moi, donc non, nous ne le savons pas. Je connais le fuseau horaire de mon courtier, je peux donc ajuster l'heure de vendredi 17 heures en conséquence et obtenir la date ajustée pour vendredi 17 heures.
 
zortharg:

J'avais peur que les règles de promotion des types de données fonctionnent de cette façon. Ok, donc :

datetime - datetime = long (durée en secondes)

datetime +/- secondes(long) = datetime(autre date)

datetime +/- secondes(int) = datetime(autre date)

Mais si je dis X=Y-Z, ou (Y-Z)/60, ou quelque chose comme ça, où X est déjà déclaré comme un long ou un int, et Y et Z sont des dates, est-ce très, très mauvais ? Et si c'est le cas, est-ce que static_cast va tout régler ?


Il ne s'agit pas de "règles de promotion", mais simplement de mon bon sens (je l'espère !). Je ferais généralement moi-même les typologies ci-dessus.

Si le résultat de mon calcul est toujours un nombre de secondes depuis le 1/1/1970 (indépendamment du fuseau horaire ou de l'absence de fuseau horaire), je le conserverais sous forme de datetime.

Sinon, tout autre résultat (une durée, des minutes depuis le 1/1/1970, etc.) sera probablement stocké sous forme de long. (Parfois un int, en particulier pour les durées typiques, etc.)


Ceci dit, je me demande comment les concepteurs de MQL4 sont arrivés à ne pas imposer l'UTC pour toutes les dates, et à forcer tous les courtiers à envoyer des données UTC, et à laisser le client les interpréter en heure locale, parce que leur approche actuelle complique inutilement tout en aval.

Cela rend le calcul de l'heure GMT et des heures d'ouverture/de fermeture des sessions pendant le backtesting plus difficile qu'il ne devrait l'être, si vous voulez le faire correctement pour toutes les sources de données tick.

(Par exemple, Alpari a plusieurs fuseaux horaires dans ses données historiques, vous devez donc faire attention à vos sources de données lors du backtesting).

PS J'ai corrigé mon erreur précédente :)

 

ydrol, pour l'amour de tout ce qui est sacré ou quoi que ce soit, dites-moi s'il vous plaît - si vous le savez - si static_cast peut être utilisé dans mql4 ! Est-ce la même chose qu'en C++ ? Cette page https://docs.mql4.com/basis/types/casting ne le mentionne jamais, je ne le trouve pas dans les forums, je ne le trouve nulle part. Je me heurte constamment à des situations dans mon codage, pas seulement en transformant la date en long, mais la date en double, où c'est inévitable, donc je veux le faire correctement. Le programme détermine la partie de la semaine dans laquelle se trouve un échantillon, et l'accentue dans ses calculs en conséquence - mais le temps modulo le nombre de secondes dans une semaine est toujours une variable de type datetime et à moins que je puisse le convertir en quelque chose d'autre, il est coincé de cette façon. Mais j'ai besoin d'exécuter une fonction mathématique sur cette variable et de la transformer en un double à la fin, vous voyez. Si vous ne le savez pas, ne vous inquiétez pas, mais si vous le savez, dites-moi comment je dois encoder correctement les choses dans ce genre de situation.

raptoruk, "Non... peut-être que vous le faites, je ne le fais pas, donc non, nous ne le faisons pas." C'est absolument un problème. Pas pour moi, pas pour vous, pas pour nous, mais pour la validité de votre déclaration précédente que c'est indépendant du fuseau horaire. Parce que peu importe le fuseau horaire de votre courtier, le trading sur le forex ne suit pas l'horloge de votre courtier. C'est 17h Eastern le vendredi et le dimanche. 10 heures GMT. Et qu'en est-il de l'heure d'été et de l'heure normale ? Qu'en est-il de CELA ! Certains pays n'ajoutent pas d'heure ou la soustraient, ou bien ils le font un jour différent, donc vous pourriez vous retrouver avec un code décalé d'une heure pendant certaines parties de l'année, s'il n'y a pas une façon agréable de le faire. Moi, je n'ai pas encore choisi de courtier. Celui que j'essaie est en GMT+2 mais je pense maintenant que je ne les aime pas, sur la base de leur compte de démonstration. Et si j'en essaie un pour de vrai, peut-être que je voudrai en utiliser un autre à la place. Je ne veux donc pas que le fuseau horaire du courtier soit codé en dur dans le programme s'il est facile de ne pas le faire. Ne soyez pas encore comme cet autre type, qui essaie de tout déformer pour en faire une occasion de lancer une insulte au lieu de prendre la question au pied de la lettre.