def trade_pretty_printer(exchange_name, trade, markdown=False) -> str:
    """
    Trade pretty printer
    :param exchange_name: the exchange name
    :param trade: the trade object
    :param markdown: if printer use markdown
    :return: the trade pretty printed
    """
    try:
        from octobot_trading.enums import TraderOrderType

        _, _, code = get_markers(markdown)
        trade_type = trade.trade_type
        if trade_type == TraderOrderType.UNKNOWN:
            trade_type = trade.side

        trade_executed_time_str = (
            timestamp_util.convert_timestamp_to_datetime(
                trade.executed_time, time_format=ORDER_TIME_FORMAT
            )
            if trade.executed_time
            else ""
        )
        return (
            f"{code}{trade_type.name.replace('_', ' ')}{code}: {code}"
            f"{get_min_string_from_number(trade.executed_quantity)} {trade.currency}{code} at {code}"
            f"{get_min_string_from_number(trade.executed_price)} {trade.market}{code} "
            f"{exchange_name.capitalize()} "
            f"{trade_executed_time_str} "
        )
    except ImportError:
        LOGGER.error(
            "open_order_pretty_printer requires OctoBot-Trading package installed"
        )
    return ""
Exemple #2
0
def _format_trades(trade_history):
    trade_time_key = "time"
    trade_price_key = "price"
    trade_description_key = "trade_description"
    trade_order_side_key = "order_side"
    trades = {
        trade_time_key: [],
        trade_price_key: [],
        trade_description_key: [],
        trade_order_side_key: []
    }

    for trade in trade_history:
        trades[trade_time_key].append(convert_timestamp_to_datetime(trade.filled_time,
                                                                    time_format="%y-%m-%d %H:%M:%S"))
        trades[trade_price_key].append(trade.price)
        trades[trade_description_key].append(f"{trade.order_type.name}: {trade.quantity}")
        trades[trade_order_side_key].append(trade.side.value)

    return trades
Exemple #3
0
def format_trades(dict_trade_history):
    trade_time_key = "time"
    trade_price_key = "price"
    trade_description_key = "trade_description"
    trade_order_side_key = "order_side"
    trades = {
        trade_time_key: [],
        trade_price_key: [],
        trade_description_key: [],
        trade_order_side_key: []
    }

    for dict_trade in dict_trade_history:
        status = dict_trade.get(
            trading_enums.ExchangeConstantsOrderColumns.STATUS.value,
            trading_enums.OrderStatus.UNKNOWN.value)
        trade_side = trading_enums.TradeOrderSide(
            dict_trade[trading_enums.ExchangeConstantsOrderColumns.SIDE.value])
        trade_type = trading_api.parse_trade_type(dict_trade)
        if trade_type == trading_enums.TraderOrderType.UNKNOWN:
            trade_type = trade_side
        if status is not trading_enums.OrderStatus.CANCELED.value or DISPLAY_CANCELLED_TRADES:
            trade_time = dict_trade[
                trading_enums.ExchangeConstantsOrderColumns.TIMESTAMP.value]
            if trade_time > trading_constants.MINIMUM_VAL_TRADE_TIME:
                trades[trade_time_key].append(
                    timestamp_util.convert_timestamp_to_datetime(
                        trade_time, time_format="%y-%m-%d %H:%M:%S"))
                trades[trade_price_key].append(
                    float(
                        dict_trade[trading_enums.ExchangeConstantsOrderColumns.
                                   PRICE.value]))
                trades[trade_description_key].append(
                    f"{trade_type.name.replace('_', ' ')}: "
                    f"{dict_trade[trading_enums.ExchangeConstantsOrderColumns.AMOUNT.value]}"
                )
                trades[trade_order_side_key].append(trade_side.value)

    return trades
Exemple #4
0
def test_datetime_to_timestamp():
    assert datetime_to_timestamp(convert_timestamp_to_datetime(322548600, time_format="%d/%m/%y %H:%M"),
                                 date_time_format="%d/%m/%y %H:%M") == 322548600