'Counter a trade from another node
:param message_id: A message id to identify the trade
:param quantity: The quantity to use for the counter offer
:param timestamp: A timestamp when the trade was countered
:param proposed_trade: A proposed trade that needs to be countered
:type message_id: MessageId
:type quantity: Quantity
:type timestamp: Timestamp
:type proposed_trade: ProposedTrade
:return: A counter trade
:rtype: CounterTrade'

@classmethod
def counter(cls, message_id, quantity, timestamp, proposed_trade):

    assert isinstance(proposed_trade, ProposedTrade), type(proposed_trade)
    return CounterTrade(message_id, proposed_trade.recipient_order_id, proposed_trade.order_id, proposed_trade.proposal_id, proposed_trade.price, quantity, timestamp)
