예제 #1
0
    def test_orderbook_level_parser_given_invalid_value_raises_value_error(self):
        # Arrange, Act, Assert
        with pytest.raises(ValueError):
            BookTypeParser.to_str_py(0)

        with pytest.raises(ValueError):
            BookTypeParser.from_str_py("")
예제 #2
0
def _build_order_book_deltas(values):
    return OrderBookDeltas(
        instrument_id=InstrumentId.from_str(values[0]["instrument_id"]),
        book_type=BookTypeParser.from_str_py(values[0]["book_type"]),
        deltas=[OrderBookDelta.from_dict(v) for v in values],
        ts_event=values[0]["ts_event"],
        ts_init=values[0]["ts_init"],
    )
예제 #3
0
    def test_orderbook_level_from_str(self, string, expected):
        # Arrange, Act
        if expected is None:
            return

        result = BookTypeParser.from_str_py(string)

        # Assert
        assert expected == result
예제 #4
0
def _build_order_book_snapshot(values):
    # First value is a CLEAR message, which we ignore
    assert len(set([v["instrument_id"] for v in values])) == 1
    assert len(values) >= 2, f"Not enough values passed! {values}"
    return OrderBookSnapshot(
        instrument_id=InstrumentId.from_str(values[1]["instrument_id"]),
        book_type=BookTypeParser.from_str_py(values[1]["book_type"]),
        bids=[(order["order_price"], order["order_size"])
              for order in values[1:] if order["order_side"] == "BUY"],
        asks=[(order["order_price"], order["order_size"])
              for order in values[1:] if order["order_side"] == "SELL"],
        ts_event=values[1]["ts_event"],
        ts_init=values[1]["ts_init"],
    )
예제 #5
0
 def from_dict(values) -> "BSPOrderBookDelta":
     PyCondition.not_none(values, "values")
     action: BookAction = BookActionParser.from_str_py(values["action"])
     order: Order = (Order.from_dict({
         "price": values["order_price"],
         "size": values["order_size"],
         "side": values["order_side"],
         "id": values["order_id"],
     }) if values["action"] != "CLEAR" else None)
     return BSPOrderBookDelta(
         instrument_id=InstrumentId.from_str(values["instrument_id"]),
         book_type=BookTypeParser.from_str_py(values["book_type"]),
         action=action,
         order=order,
         ts_event=values["ts_event"],
         ts_init=values["ts_init"],
     )
예제 #6
0
    def test_orderbook_level_to_str(self, enum, expected):
        # Arrange, Act
        result = BookTypeParser.to_str_py(enum)

        # Assert
        assert expected == result