← Projets

brokerclock

Avec brokerclock, je convertis l’heure du serveur d’un courtier MetaTrader 5 en UTC et inversement. La bibliothèque déduit la règle d’heure d’été du courtier à partir de l’historique des bougies, sans importer le paquet MetaTrader5.

  • Python
  • IANA time zones
  • pandas
  • MetaTrader 5
  • PyPI
pip install brokerclock

Le problème

MetaTrader 5 renvoie les heures des bougies, ticks, transactions et ordres selon l’horloge du serveur du courtier, en secondes depuis 1970, et non en UTC. Beaucoup de courtiers sont à GMT+2 en hiver et à GMT+3 en été, avec un changement aux dates américaines.

Un décalage fixe est faux une partie de chaque année, et une règle d’heure d’été européenne l’est environ trois semaines en mars et une semaine vers début novembre. Les dates de requête et l’expiration des ordres sont lues sur la même horloge.

L’approche

Dans ServerZone, je modélise l’horloge du serveur comme un fuseau IANA plus un décalage par pas de 15 minutes : chaque conversion applique la règle en vigueur à cet instant. L’heure répétée exige un choix explicite et l’heure sautée lève une erreur.

detect() lit la clôture hebdomadaire du vendredi à 17 h, heure de New York, dans des bougies M1 à H1, évalue les horloges fixes, américaines, européennes et australiennes, et renvoie ses preuves : semaines concordantes, exceptions et égalités.

check() et measure_offset() confirment l’horloge à partir de ticks en direct et refusent les ticks périmés. brokerclock.pandas convertit des colonnes entières et les tableaux renvoyés par copy_rates_*.

Le résultat

J’ai publié brokerclock 0.1.0 sur PyPI pour Python 3.10 à 3.14, avec 260 tests. La bibliothèque n’a besoin que de la bibliothèque standard, plus tzdata sous Windows, et fonctionne donc aussi sous Linux et macOS, où le paquet MetaTrader5 ne s’installe pas.