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
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)
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)
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")
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)
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)