Calculs & affichages / Historiques /
La base de données Candles

Stockage local des cours de devises 'Candles'


Avant-propos


Description

Plan du tuto :
  1. Sauvegarde de plusieurs bases de données.
  2. Adaptation du code existant.
    1. Méthodes 'Utilisateur'.
    2. Téléchargement et affichage des historiques.
  3. Les données seront placées dans des fichiers csv et en base de données.
  4. Base de données SQLite :
    1. Implémentation des classes.
    2. Connexion des bases de données au contrôleur d'historiques.
    3. ORM peewee.
    4. DB Browser for SQLite : Logiciel externe pour gérér les bases de données SQLite.
  5. Téléchargement et écriture en base de données.
  6. Synchronisation des fichiers csv et des tables de la db : à coder ...

1 - Sauvegarde de plusieurs bases de données.

Retour au plan

Chemin des bases de données :

 


2 - Adaptation du code existant.

Retour au plan

Le code du dernier tuto doit être adapté aux ajouts que nous allons apporter.


2.1 - Méthodes 'Utilisateur'.

Retour au plan


2.2 - Téléchargement et affichage des historiques :

Retour au plan

Dans cet exemple, la dernière semaine téléchargée est (2018, 38).


3 - Les données seront placées dans des fichiers csv et en base de données.

Retour au plan

 


Algorithme download_histos() :

  • Boucle sur le nombre de semaines à télécharger :
    • Appel de la méthode privée _next_week required() :
      • Recherche de la première semaine existant sur internet ET n'existant pas localement.
      • Si l'instrument n'existe pas sur internet (ou mauvaise connexion) : Message et fin.
      • Si la base de données est à jour : Message et fin.
    • Appel de la méthode privée _download_csv_file() :          ← Voir diagramme ci-dessus.
      • Téléchargement du fichier.
      • Décompactage.
      • Décodage.
      • Production d'une DataFrame Pandas.
    • Appel de la méthode df_to_csv() :                                   ← Voir diagramme ci-dessus.
      • Production du fichier .csv à partir du DataFrame Pandas.
      • Copie de ce fichier sur disque dur.
    • Appel de la méthode df_to_table() :
      • L'écriture en base de données est déléguée aux objets db.


4 - Base de données SQLite.

Retour au plan

Conventions :


4.1 - Implémentation des classes.

Retour au plan


4.2 - Connexion des bases de données au contrôleur d'historiques.

Retour au plan


4.3 - ORM peewee :

Retour au plan


4.4 - DB Browser for SQLite : Logiciel externe pour gérér les bases de données SQLite.

Retour au plan

Les tables ont bien été créées. On peut voir les colonnes de h1 sur la droite.


5 - Téléchargement et écriture en base de données :

Retour au plan

 


 


1 semaine téléchargée = 5 jours. Sélectionner une autre table pour voir son contenu.

 


6 - Synchronisation des fichiers csv et des tables de la db

Retour au plan


 


 


Algorithme synchro_db_csv() :

  • Paramètre en entrée : b_ticks, booléen = type de données (Ticks ou Candles).

  • Création de 2 listes : Méthode privée _lists_to_update_db() qui renvoie l_drop et l_add

    • (1) - l_weeks_db : Liste des semaines existant réellement en base de données, déléguée à DbCandle.week_exists().

    • (2) - l_weeks_csv : Liste des semaines existant réellement en fichier csv.
                                  |_ Intersection (Inter) = (1) ⋂ (2) 

    • l_drop : Liste des semaines à supprimer de la db (celles qui n'existent pas en csv) : (1) - (Inter) 

    • l_add : Liste des semaines à ajouter dans la db (celles des csv qui n'existent pas en db) : (2) - (Inter)

  • Si les 2 listes sont vides : Message et fin.

  • Ajout de données. Méthode add_weeks(). Boucle sur l_add :

    • csv_to_df(), produisant le DataFrame df.

    • db.change_datetime_column(df) : Mise en conformité → la colonne df.DateTime (str) devient df.timestamp (float).

    • db.df_to_table() : Écriture de df dans la table principale M1.

    • db.update_derived() : Écriture de df filtré dans les tables dérivées : M5, M15, M30, H1, H4, Day et Week.

  • Suppression de données. Boucle sur l_drop :

    • db.delete_week(year, week) : Suppression d'enregistrements de toutes les tables, de la semaine (year, week).


Méthodes à coder, dans l'ordre :

  1. ☐ CtrlHistos._lists_to_update_db() + vérification.
  2. ☐ CtrlHistos.csv_to_df() + vérification.
  3. ☐ CtrlHistos.add_weeks() + vérification.

 

Bon coding, et bon courage !


Snippets

Essayez de résoudre cette fonctionnalité par vous-même.
Consultez les réponses (snippets) seulement si vous n'avez pas trop de temps.

Bonjour les codeurs !