class SyncMarketsHelpers(object):

    # ------------------------------------------------------------------------------------------------
    def __init__(self, account='DEMO'):
        """
        Initialisation de l'objet
        """
        # Enregistrement des variables utiles
        self._type = 'DEMO' if Configuration.from_filepath(
        ).get_use_demo_account() is True else 'REEL'
        self._accId = Configuration.from_filepath().get_credentials()[
            self._type.lower()]['account_id']
        self._mdp = Configuration.from_filepath().get_credentials()[
            self._type.lower()]['password']
        # Initialisation des variables necessaires
        self._broker = None
        self._mdl = None
        self._markets = None
        pass

    # ------------------------------------------------------------------------------------------------
    def connect(self):
        """
        Connxexion au Broker
        """
        # Initialisation Broker
        self._broker = XtbClient(account_id=self._accId,
                                 password=self._mdp,
                                 type=self._type)
        # Ouverture Connexion
        self._broker.login()
        pass

    # ------------------------------------------------------------------------------------------------

    def getMarkets(self):
        """
        Obtenir les Ordres
        """
        self._markets = self._broker.get_all_markets().to_dict("Records")

    # ------------------------------------------------------------------------------------------------

    def updateBdd(self):
        """
        Mise à jour de la BDD
        """
        # Initialisation du modele
        self._mdl = MarketsModel()
        for row in self._markets:
            self._mdl.upsert(record=row)
        pass

    # ------------------------------------------------------------------------------------------------
    def disconnect(self):
        """
        Deconnexion au broker
        """
        pass
 def updateBdd(self):
     """
     Mise à jour de la BDD
     """
     # Initialisation du modele
     self._mdl = MarketsModel()
     for row in self._markets:
         self._mdl.upsert(record=row)
     pass
示例#3
0
def getAll():
    """Parse un fichier de log dans un DataFrame"""
    if request.method == 'POST':
        # Recuperation des infos
        data = MarketsModel().getAll()
        # Cryptage des id
        data["id"] = data.apply(
            lambda x: Crypt.encode(cfg._APP_SECRET_KEY, x['id']), axis=1)
        # Retour du message
        return Render.jsonTemplate(_OPERATION,
                                   'Marchés',
                                   categorie="SUCCESS",
                                   data=data.to_dict("records"))
    else:
        abort(400)
示例#4
0
def marketsEdit(idCrypt):
    # Recuperation des ressources statiques Bokeh
    js_resources = INLINE.render_js()
    css_resources = INLINE.render_css()
    # Creation de la Strategie
    stgyObj = StgyFactory("DEV").make()
    # Decryptage id
    idDecrypt = Crypt.decode(cfg._APP_SECRET_KEY, idCrypt)
    # Recuperation des infos
    data = MarketsModel().getMarketById(idDecrypt).to_dict('Records')
    # Recuperation des prix
    stgyObj.run(symbol=data[0]['symbol'], ut='H1')
    # Recuperation des Ordres
    df_orders = OrdersModel().getOrdersBySymbol(symbol=data[0]['symbol'])
    # Construction du Graphique avec Ordres
    graph = stgyObj.plot()
    graph.addOrders(df_orders)
    script, div = components(graph.save())
    # Preparation des données de la page
    data = {
        'id': idCrypt,
        # Graphique
        'plot_div': div,
        'plot_script': script,
        'js_resources': js_resources,
        'css_resources': css_resources
    }
    # Renvoi de la page
    return Render.htmlTemplate('home/marketEdit.html', data=data)
示例#5
0
 def process_markets(self):
     """
     =============================================================
     Traiter les marchés à partir de la source de marché configurée
     =============================================================
     """
     # Recuperation des Marchés à Trader
     markets_to_trade = MarketsModel().get_to_trade()
     if markets_to_trade is None or markets_to_trade.empty:
         raise StopIteration('Aucun marchés à trader')
     # Parcours des Marchés
     LOGGER.info("Il y a {} marché(s) à analyser".format(
         len(markets_to_trade)))
     LOGGER.info("Debut Iteration des Marchés")
     for idx, item in markets_to_trade.iterrows():
         self.process_market(market=item)
     raise StopIteration("Fin iteration des Marchés")
示例#6
0
def getMarketById():
    if request.method == 'POST':
        # Recuperation + traitement des données du formulaire
        data = Utils.parseForm(dict(request.form))
        # Decryptage id
        idDecrypt = Crypt.decode(cfg._APP_SECRET_KEY, data["id"])
        # Recuperation des infos
        df = MarketsModel().getMarketById(idDecrypt)
        data = {}
        data["info"] = {}
        data["info"] = df.to_dict("Records")
        # Retour du message
        return Render.jsonTemplate(_OPERATION,
                                   'Marchés',
                                   categorie="SUCCESS",
                                   data=data)
    else:
        abort(400)
示例#7
0
def updateById():
    if request.method == 'POST':
        # Recuperation + traitement des données du formulaire
        data = Utils.parseForm(dict(request.form))
        # Decryptage id
        data["id"] = Crypt.decode(cfg._APP_SECRET_KEY, data["id"])
        # Recuperation des infos
        MarketsModel().update(data)
        # Retour du message
        return Render.jsonTemplate(_OPERATION,
                                   'Changement du Statut',
                                   categorie="SUCCESS")
    else:
        abort(400)