'Don\'t use this class directly, use one of the class methods
:param message_id: A message id to identify the tick
:param order_id: A order id to identify the order this tick represents
:param price: A price to indicate for which amount to sell or buy
:param quantity: A quantity to indicate how much to sell or buy
:param timeout: A timeout when this tick is going to expire
:param timestamp: A timestamp when the tick was created
:param is_ask: A bool to indicate if this tick is an ask
:param public_key: The public key of the originator of this message
:param signature: A signature of this message
:type message_id: MessageId
:type order_id: OrderId
:type price: Price
:type quantity: Quantity
:type timeout: Timeout
:type timestamp: Timestamp
:type is_ask: bool
:type public_key: str
:type signature: str'

def __init__(self, message_id, order_id, price, quantity, timeout, timestamp, is_ask, public_key=EMPTY_PK, signature=EMPTY_SIG):

    super(Tick, self).__init__(message_id, timestamp)
    assert isinstance(order_id, OrderId), type(order_id)
    assert isinstance(price, Price), type(price)
    assert isinstance(quantity, Quantity), type(quantity)
    assert isinstance(timeout, Timeout), type(timeout)
    assert isinstance(public_key, str), type(public_key)
    assert isinstance(signature, str), type(signature)
    assert isinstance(is_ask, bool), type(is_ask)
    self._order_id = order_id
    self._price = price
    self._quantity = quantity
    self._timeout = timeout
    self._is_ask = is_ask
    self._public_key = public_key
    self._signature = signature
