Ejemplo n.º 1
0
    async def create_stop_limit_order(self,
                                      pair: Pair,
                                      side: enums.OrderSide,
                                      amount: str,
                                      limit_price: str,
                                      stop_price: str,
                                      time_in_force: enums.TimeInForce = None,
                                      client_id: str = None) -> dict:
        data = {
            "instrument_code": map_pair(pair),
            "side": side.value,
            "type": enums.OrderType.STOP_LIMIT.value,
            "amount": amount,
            "price": limit_price,
            "trigger_price": stop_price
        }

        if client_id is not None:
            data['client_id'] = client_id

        if time_in_force is not None:
            data['time_in_force'] = time_in_force.value

        return await self._create_post("account/orders",
                                       data=data,
                                       signed=True)
Ejemplo n.º 2
0
    async def get_account_orders(self,
                                 from_timestamp: datetime.datetime = None,
                                 to_timestamp: datetime.datetime = None,
                                 pair: Pair = None,
                                 with_cancelled_and_rejected: str = None,
                                 with_just_filled_inactive: str = None,
                                 with_just_orders: str = None,
                                 max_page_size: str = None,
                                 cursor: str = None) -> dict:
        params = BitpandaClient._clean_request_params({
            "with_cancelled_and_rejected":
            with_cancelled_and_rejected,
            "with_just_filled_inactive":
            with_just_filled_inactive,
            "with_just_orders":
            with_just_orders,
            "max_page_size":
            max_page_size,
            "cursor":
            cursor,
        })

        if pair is not None:
            params["instrument_code"] = map_pair(pair)

        if from_timestamp is not None:
            params["from"] = from_timestamp.astimezone(pytz.utc).isoformat()

        if to_timestamp is not None:
            params["to"] = to_timestamp.astimezone(pytz.utc).isoformat()

        return await self._create_get("account/orders",
                                      params=params,
                                      signed=True)
    def to_json(self):
        ret = {
            "type": "CREATE_ORDER",
            "order": {
                "instrument_code": map_pair(self.pair),
                "type": self.type.value,
                "side": self.side.value,
                "amount": self.amount
            }
        }

        if self.price is not None:
            ret['order']['price'] = self.price

        if self.stop_price is not None:
            ret['order']['trigger_price'] = self.stop_price

        if self.client_id is not None:
            ret['order']['client_id'] = self.client_id

        if self.time_in_force is not None:
            ret['order']['time_in_force'] = self.time_in_force.value

        if self.is_post_only is not None:
            ret['order']['is_post_only'] = self.is_post_only

        return ret
Ejemplo n.º 4
0
    async def get_order_book(self, pair: Pair, level: str = None) -> dict:
        params = BitpandaClient._clean_request_params({
            "level": level,
        })

        return await self._create_get("order-book/" + map_pair(pair),
                                      params=params)
Ejemplo n.º 5
0
    async def delete_account_orders(self, pair: Pair = None) -> dict:
        params = {}

        if pair is not None:
            params["instrument_code"] = map_pair(pair)

        return await self._create_delete("account/orders",
                                         params=params,
                                         headers=self._get_header())
 def get_subscription_message(self, **kwargs) -> dict:
     return {
         "name": self.get_channel_name(),
         "properties": [{
             "instrument_code": map_pair(params.pair),
             "time_granularity": {
                 "unit": params.unit.value,
                 "period": params.period
             }
         } for params in sorted(self.subscription_params)]
     }
Ejemplo n.º 7
0
    async def get_candlesticks(self, pair: Pair, unit: enums.TimeUnit,
                               period: str, from_timestamp: datetime.datetime,
                               to_timestamp: datetime.datetime) -> dict:
        params = {
            "unit": unit.value,
            "period": period,
            "from": from_timestamp.astimezone(pytz.utc).isoformat(),
            "to": to_timestamp.astimezone(pytz.utc).isoformat(),
        }

        return await self._create_get("candlesticks/" + map_pair(pair),
                                      params=params)
Ejemplo n.º 8
0
    def to_json(self):
        ret = {
            "type": "CANCEL_ALL_ORDERS",
        }

        if self.order_ids is not None:
            ret['order_ids'] = self.order_ids

        if self.pair is not None:
            ret['instrument_code'] = map_pair(self.pair)

        return ret
Ejemplo n.º 9
0
    async def get_price_tick(self,
                             pair: Pair,
                             from_timestamp: datetime.datetime = None,
                             to_timestamp: datetime.datetime = None) -> dict:
        params = {}

        if from_timestamp is not None:
            params['from'] = from_timestamp.astimezone(pytz.utc).isoformat()

        if to_timestamp is not None:
            params['to'] = to_timestamp.astimezone(pytz.utc).isoformat()

        return await self._create_get("price-ticks/" + map_pair(pair),
                                      params=params)
Ejemplo n.º 10
0
    async def delete_account_orders(self,
                                    pair: Pair = None,
                                    ids: List[str] = None) -> dict:
        params = {}

        if pair is not None:
            params["instrument_code"] = map_pair(pair)

        if ids is not None:
            params['ids'] = ','.join(ids)

        return await self._create_delete("account/orders",
                                         params=params,
                                         signed=True)
Ejemplo n.º 11
0
    async def create_market_order(self,
                                  pair: Pair,
                                  side: enums.OrderSide,
                                  amount: str,
                                  client_id: str = None) -> dict:
        data = {
            "instrument_code": map_pair(pair),
            "side": side.value,
            "type": enums.OrderType.MARKET.value,
            "amount": amount
        }

        if client_id is not None:
            data['client_id'] = client_id

        return await self._create_post("account/orders",
                                       data=data,
                                       signed=True)
Ejemplo n.º 12
0
    async def get_account_trades(self,
                                 from_timestamp: datetime.datetime = None,
                                 to_timestamp: datetime.datetime = None,
                                 pair: Pair = None,
                                 max_page_size: str = None,
                                 cursor: str = None) -> dict:
        params = BitpandaClient._clean_request_params({
            "max_page_size": max_page_size,
            "cursor": cursor,
        })

        if pair is not None:
            params["instrument_code"] = map_pair(pair)

        if from_timestamp is not None:
            params["from"] = from_timestamp.astimezone(pytz.utc).isoformat()

        if to_timestamp is not None:
            params["to"] = to_timestamp.astimezone(pytz.utc).isoformat()

        return await self._create_get("account/trades",
                                      params=params,
                                      signed=True)
Ejemplo n.º 13
0
 async def get_market_ticker(self, pair: Pair) -> dict:
     return await self._create_get("market-ticker/" + map_pair(pair))