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

Stockage local des cours en 'ticks' et en 'Renko'


Avant-propos

Adaptation du code existant.


Examen de la table m15 par DB Browser for SQLite.


Appui sur la touche CTRL pour arrêter l'exécution.


Vérification des Candles.

# Imports internes
from trading.historiques.db import DataBase             # Classe-parent.


class DbTick(DataBase):
    def __init__(self, o_ctrl):
        super().__init__(o_ctrl=o_ctrl, b_ticks=True)

 


Description

Plan du tuto :
  1. Affichage de l'état des historiques de Ticks.
  2. Synchronisation des Ticks.
  3. Téléchargement de Ticks.
  4. Les bases de données Renko : Création des tables Renko1 à Renko20.
  5. Update des volumes de Candles à partir des Ticks.
  6. Édition des données dans les tables de Renko : ajouts, suppressions.

Vérification finale :


1 - Affichage de l'état des historiques de Ticks.

Retour au plan

def main():  # MAP ***** MAP ***** MAP ***** MAP ***** MAP ***** MAP ***** MAP *****
    """ Code de MAP (mise au point). Espace expérimental : ajouter, supprimer, commenter, décommenter, ... """
    h = CtrlHistos('EUR/USD')
    # h = CtrlHistos('USD/JPY')

    """ Candles. """
    # h.download_histos(1, b_ticks=False)
    # h.synchro_db_csv(b_ticks=False)
    # h.verify_weeks(b_ticks=False)  # , b_silent=True)

    """ Ticks. """
    # h.download_histos(1, b_ticks=True)
    h.verify_weeks(b_ticks=True)
    # h.synchro_db_csv(b_ticks=True)

Une seule ligne est activée : h.verify_weeks(b_ticks=True)


Petits carrés mauves = seulement fichiers dans disque dur.


2 - Synchronisation des Ticks :

Retour au plan


La synchronisation a échoué car la classe DbTick n'est pas encore codée.


La classe DbTick :


Une seule table (ticks), contenant 3 champs : timestamp, Bid et Ask.


Synchroniser les ticks avec les fichiers csv.


Pour plus de clarté, seules les méthodes de DbTick sont représentées dans leurs contenants.


Exemple : 7 semaines de ticks on été synchronisées.


7 semaines : 11 millions d'enregistrementes et  600 Mo sur disque dur !
 


3 - Téléchargement de ticks :

Retour au plan


La semaine (2018, 13) a bien été téléchargée et entrée en base de données : rectangle bleu.


4 - Les bases de données Renko : Création des tables Renko1 à Renko20 :

Retour au plan


Comparer le code de db_renko.py avec l'image ci-dessus pour mettre en évidence les tables et la champs.


5 - Update des volumes dans les tables Candles.

Retour au plan

Algorithme :

  • Le contrôleur d'historiques fait la liste des semaines de Candles à updater au niveau des volumes.
    • Point 5 de la méthode CtrlHistos._lists_to_update_db()
  • La méthode d'update des volumes de Candles existe déjà, il s'agit de DbCandle.update_volume().
  • Le contrôleur d'historiques appelle cette méthode à 2 occasions :
    • Lors de la synchronisation des ticks : Point 6 de la méthode CtrlHistos.synchro_db_csv().
    • Lors du téléchargement de ticks : Point 3 de la méthode CtrlHistos.download_histos().
  • Pour l'instant, les 3 points mentionnés sont commentés.

A faire :


6 - Édition des données dans les tables de Renko : ajouts, suppressions.

Retour au plan


Fonctionnement :

La méthode DbRenko.range_exists() doit donc être codée.
 

La méthode DbRenko.df_to_table() doit donc être créée et codée.
 

En résumé, 2 méthodes sont à coder dans DbRenko : range_exists() et df_to_table()

Bon coding et bon courage !


Vérification

Retour au plan

Mode geek :

  • ☐ Lancer uniquement une synchronisation des ticks dans main() de ctrl_histos.
  • ☐ Demander un arrêt manuel (F12) apres quelques synchronisations.
  • Rapport affiché :

 

  • ☐ Ouvrir renko.sql dans DB Browser for SQLite, afficher le contenu des tables :

Toutes les tables Renko contiennent des données.


Mode utilisateur

Retour au plan

  • ☐ Activer les 4 lignes provisoirement commentées dans /nodes/generateurs/histos/histos.py > Node.histo_data().
    • Elles concernent les ticks.
    • ☐ Supprimer le self.ut.printc() final.
  • ☐ Lancer le poste de contrôle (la fenêtre main).
  • ☐ Mettre à jour les historiques via les boutons.

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 !