Exemplo n.º 1
0
    def __create_display_check(
        order: Order,
        checking_response: Order.CheckingResponse,
    ):
        checking_response_dict = pb_handler.message_to_dict(
            message=checking_response, )
        order_dict = pb_handler.message_to_dict(message=order)
        order_df = pd.DataFrame([order_dict])
        fields = [
            "action",
            "order_type",
            "price",
            "product_id",
            "size",
            "time_type",
        ]
        fees = pd.DataFrame(checking_response_dict["transaction_fees"])

        console.print(
            "The following `Order` will be created :\n\n",
            order_df[fields],
            "\n\nFree new space :",
            checking_response_dict["free_space_new"],
            "\n\nFees :\n\n",
            fees,
        )
Exemplo n.º 2
0
 def __lastnews_display(latest_news: LatestNews):
     news_dict = pb_handler.message_to_dict(message=latest_news, )
     for article in news_dict["items"]:
         console.print("date", article["date"])
         console.print("title", article["title"])
         console.print("content", article["content"])
         console.print("---")
Exemplo n.º 3
0
    def create_calculate_product_id(
        self,
        product: int,
        symbol: str,
    ) -> Union[int, None]:
        trading_api = self.__trading_api

        if product is None:
            request_lookup = ProductSearch.RequestLookup(
                search_text=symbol,
                limit=1,
                offset=0,
                product_type_id=1,
            )

            products_lookup = trading_api.product_search(
                request=request_lookup,
                raw=False,
            )
            products_lookup_dict = pb_handler.message_to_dict(
                message=products_lookup, )
            product = products_lookup_dict["products"][0]

            if len(products_lookup.products
                   ) <= 0 or product["symbol"] != symbol:
                return None
            else:
                return int(product["id"])
        else:
            return product
Exemplo n.º 4
0
    def __hold_filter_current_positions(
        portfolio: Update.Portfolio, ) -> pd.DataFrame:
        """Filter the positions in order to keep only held ones.

        Parameters
        ----------
        portfolio : Update.Portfolio
            Portfolio returned from the API.

        Returns
        -------
        pd.DataFrame
            Filtered portfolio.
        """

        # CONVERT TO DATAFRAME
        portfolio_dict = pb_handler.message_to_dict(message=portfolio)
        positions = pd.DataFrame(portfolio_dict["values"])

        # SETUP MASK
        mask_product = positions["positionType"] == "PRODUCT"
        mask_not_empty = positions["size"] > 0
        mask_current_position = mask_product & mask_not_empty

        # FILTER
        positions = positions[mask_current_position]

        return positions
Exemplo n.º 5
0
 def __companynews_display(news_by_company: NewsByCompany):
     news_dict = pb_handler.message_to_dict(message=news_by_company, )
     for article in news_dict["items"]:
         console.print("date", article["date"])
         console.print("title", article["title"])
         console.print("content", article["content"])
         console.print("isins", article["isins"])
         console.print("---")
Exemplo n.º 6
0
 def __topnews_display(top_news: TopNewsPreview):
     news_dict = pb_handler.message_to_dict(message=top_news, )
     for article in news_dict["items"]:
         console.print("date", article["date"])
         console.print("lastUpdated", article["lastUpdated"])
         console.print("category", article["category"])
         console.print("title", article["title"])
         console.print("brief", article["brief"])
         console.print("---")
Exemplo n.º 7
0
 def __lookup_display(product_search: ProductSearch):
     products_dict = pb_handler.message_to_dict(message=product_search, )
     products_df = pd.DataFrame(products_dict["products"])
     products_selected = products_df[[
         "id",
         "name",
         "isin",
         "symbol",
         "productType",
         "currency",
         "closePrice",
         "closePriceDate",
     ]]
     console.print(products_selected)
Exemplo n.º 8
0
 def __pending_display(orders: Update.Orders):
     orders_dict = pb_handler.message_to_dict(message=orders)
     orders_df = pd.DataFrame(orders_dict["values"])
     fields = [
         "action",
         "currency",
         "id",
         "quantity",
         "order_type",
         "price",
         "product",
         "product_id",
         "stop_price",
         "total_order_value",
     ]
     console.print(orders_df[orders_df.columns.intersection(fields)])
Exemplo n.º 9
0
    def __hold_fetch_additional_information(
        self,
        positions: pd.DataFrame,
    ) -> pd.DataFrame:
        """Fetch extra information about the positions like :
            - name
            - isin
            - symbol
            - ...

        Parameters
        ----------
        positions : pd.DataFrame
            Positions from which we want extra fields.

        Returns
        -------
        pd.DataFrame
            Positions with additional data.
        """

        # GET ATTRIBUTES
        trading_api = self.__trading_api

        # EXTRACT POSITIONS IDS
        positions_ids = positions["id"].astype("int32").tolist()

        # FETCH EXTRA DATA
        request = ProductsInfo.Request()
        request.products.extend(positions_ids)
        products_info_pb = trading_api.get_products_info(
            request=request,
            raw=False,
        )

        # CONVERT TO DICT
        products_info_dict = pb_handler.message_to_dict(
            message=products_info_pb,
        )

        # CONVERT TO DATAFRAME
        products_info = pd.DataFrame(products_info_dict["values"].values())

        # MERGE DATA WITH POSITIONS
        positions_full = pd.merge(positions, products_info, on="id")

        return positions_full
Exemplo n.º 10
0
    def __create_display_created_order(order: Order):
        order_dict = pb_handler.message_to_dict(message=order)
        order_df = pd.DataFrame([order_dict])
        fields = [
            "id",
            "action",
            "order_type",
            "price",
            "product_id",
            "size",
            "time_type",
        ]

        console.print(
            "The following `Order` was created :\n",
            order_df[order_df.columns.intersection(fields)],
        )