code: def trades(self, base_asset_code=None, counter_asset_code=None, base_asset_issuer=None, counter_asset_issuer=None,
                 offer_id=None, cursor=None, order='asc', limit=10):
          
          base_asset = Asset(base_asset_code, base_asset_issuer)
          counter_asset = Asset(counter_asset_code, counter_asset_issuer)
          asset_params = {
              'base_asset_type': base_asset.type,
              'base_asset_code': None if base_asset.is_native() else base_asset.code,
              'base_asset_issuer': base_asset.issuer,
              'counter_asset_type': counter_asset.type,
              'counter_asset_code': None if counter_asset.is_native() else counter_asset.code,
              'counter_asset_issuer': counter_asset.issuer
          }
          endpoint = '/trades'
          params = self.__query_params(offer_id=offer_id, cursor=cursor, order=order, limit=limit, **asset_params)
          return self.query(endpoint, params)
docs: Load a list of trades, optionally filtered by an orderbook.
  
          See the below docs for more information on required and optional
          parameters for further specifying your search.
  
          `GET /trades
          <https://www.stellar.org/developers/horizon/reference/endpoints/trades.html>`_
  
          :param str base_asset_code: Code of base asset.
          :param str base_asset_issuer: Issuer of base asset, if it is a native asset, let it be `None`.
          :param str counter_asset_code: Code of counter asset.
          :param str counter_asset_issuer: Issuer of counter asset, if it is a native asset, let it be `None`.
          :param int offer_id: Filter for by a specific offer id.
          :param int cursor: A paging token, specifying where to start returning records from.
          :param str order: The order in which to return rows, "asc" or "desc".
          :param int limit: Maximum number of records to return.
          :return: A list of trades filtered by a given query.
          :rtype: dict