# Получить события позиции для индикаторов графика, сгруппированные по свечам

`GET /positions/{accountId}/{asset}/chart-events/buckets`

События позиции аккаунта на одном рынке, сгруппированные по свечам запрошенного разрешения, начиная с самой старой свечи.

- Свечи выравниваются так же, как это делает datafeed: свеча начинается с момента, кратного разрешению, отсчитываемому с начала эпохи Unix, а дневная — в
  полночь UTC.
- Свеча включается, когда её начало находится внутри `[from, to]`; расстояние между `from` и `to` не может превышать 350 свечей.
- Свечи без событий опускаются.
- У каждой свечи есть сторона `buy` (увеличения лонгов, уменьшения шортов, закрытия и ликвидации) и сторона `sell` (увеличения шортов, уменьшения лонгов,
  закрытия и ликвидации). Сторона содержит до 5 последних событий, сначала самые новые, и количество всех её событий в свече.
- Учитываются только увеличения, закрытия, принудительные закрытия и ликвидации; изменения финансирования и маржи не являются событиями графика.
- Ограничено фазой, в которой аккаунт находится в данный момент.

<a id="authorization"></a>

## Авторизация

bearer: http · bearer (обязательно). Персональный API-ключ с префиксом `usk_`.

<a id="parameters"></a>

## Параметры

- path: accountId (string · uuid; обязательно). Идентификатор торгового аккаунта. Должен принадлежать вызывающей стороне.

Тип: string · uuid

format: uuid

pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$

- path: asset (string; обязательно). Тикер базового актива рынка, как возвращается `GET /v2/markets`.

Тип: string

Пример: "BTC"

minLength: 1

- query: resolution (string · enum; обязательно). Разрешение свечи, по которому группируются события, те же значения, что и у эндпоинта datafeed `/history`.

Тип: string · enum

Пример: "60"

Допустимые значения: ["1","5","15","30","60","240","1D"]

- query: from (integer; обязательно). Начало первой свечи, метка времени Unix в секундах (включительно).

Тип: integer

Пример: 1767225600

minimum: 0

maximum: 9007199254740991

- query: to (integer; обязательно). Начало последней свечи, метка времени Unix в секундах (включительно).

Тип: integer

Пример: 1768482000

minimum: 0

maximum: 9007199254740991

<a id="example-curl"></a>

## Пример · cURL

```bash
curl --request GET 'https://api.upscale.trade/positions/{accountId}/{asset}/chart-events/buckets' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_API_KEY'
```

<a id="example-javascript"></a>

## Пример · JavaScript

```javascript
const response = await fetch("https://api.upscale.trade/positions/{accountId}/{asset}/chart-events/buckets", {
  method: "GET",
  headers: {
    "Accept": "application/json",
    "Authorization": "Bearer YOUR_API_KEY"
  },
});
console.log(response.status, await response.text());
```

<a id="example-python"></a>

## Пример · Python

```python
import requests

response = requests.request(
    "GET",
    "https://api.upscale.trade/positions/{accountId}/{asset}/chart-events/buckets",
    headers={"Accept":"application/json","Authorization":"Bearer YOUR_API_KEY"},
    timeout=30,
)
print(response.status_code, response.text)
```

<a id="response-401"></a>

## Ответ 401

**401**  — Неавторизовано

<a id="response-403"></a>

## Ответ 403

**403**  — Аккаунт принадлежит другому пользователю (`account_access_denied`), или запрос аутентифицирован с помощью API-ключа, тогда как `api_trading` отключён на аккаунте (`api_trading_not_enabled`).

<a id="response-404"></a>

## Ответ 404

**404**  — Нет аккаунта с этим идентификатором или нет рынка для этого тикера.

<a id="response-429"></a>

## Ответ 429

**429**  — Превышен лимит частоты запросов API-ключа (`api_key_rate_limit_exceeded`). `Retry-After` указывает, когда вернуться; тело содержит бакет (`read` / `write`), окно, которое сработало, его лимит и `retryAt`.

<a id="response-default-charteventbucketresponse"></a>

## Ответ default · ChartEventBucketResponse

**default** application/json — Ответ

Тип: object[]

[]Схема: ChartEventBucketResponse

[]Тип: object

[]Обязательные поля: time, buy, sell

[]Типы обязательных полей: time (number; обязательно), buy (object; обязательно), sell (object; обязательно)

- []time (number; обязательно)

[]time пример: 1767225600

[]time.Тип: number

[]time.Начало свечи, метка времени Unix в секундах.

- []buy (object; обязательно)

[]buy пример: {
  "totalCount": 12,
  "events": [
    {
      "asset": "BTC",
      "direction": "long",
      "eventName": "open",
      "executedAt": 1767225599,
      "price": "1000000000",
      "size": "1000000000"
    }
  ]
}

[]buy.Тип: object

[]buy.Обязательные поля: totalCount, events

[]buy.Типы обязательных полей: totalCount (number; обязательно), events (object[]; обязательно)

[]buy.Сторона покупки: увеличения длинных позиций и уменьшения, закрытия и ликвидации коротких позиций.

- []buy.totalCount (number; обязательно)

[]buy.totalCount пример: 12

[]buy.totalCount.Тип: number

[]buy.totalCount.Количество всех событий этой стороны в свече.

- []buy.events (object[]; обязательно)

[]buy.events пример: [
  {
    "asset": "BTC",
    "direction": "long",
    "eventName": "open",
    "executedAt": 1767225599,
    "price": "1000000000",
    "size": "1000000000"
  }
]

[]buy.events.Тип: object[]

[]buy.events.До 5 последних событий этой стороны в свече, сначала самые новые.

[]buy.events.[]Тип: object

[]buy.events.[]Обязательные поля: asset, direction, eventName, executedAt, price, size

[]buy.events.[]Типы обязательных полей: asset (string; обязательно), direction (string · enum; обязательно), eventName (string · enum; обязательно), executedAt (number; обязательно), price (string · int32; обязательно), size (string · int32; обязательно)

- []buy.events.[]asset (string; обязательно)

[]buy.events.[]asset пример: BTC

[]buy.events.[]asset.Тип: string

[]buy.events.[]asset.Тикер базового актива рынка, на котором произошло событие.

- []buy.events.[]direction (string · enum; обязательно)

[]buy.events.[]direction пример: long

[]buy.events.[]direction.Тип: string · enum

[]buy.events.[]direction.Направление позиции, к которой относится событие.

[]buy.events.[]direction.Допустимые значения: ["long","short"]

- []buy.events.[]eventName (string · enum; обязательно)

[]buy.events.[]eventName пример: open

[]buy.events.[]eventName.Тип: string · enum

[]buy.events.[]eventName.Что обозначает маркер: `open` — для первого увеличения позиции, `increase` — для последующих, `decrease` — для частичного закрытия, `close` — для полного и `liquidation` — для ликвидации.

[]buy.events.[]eventName.Допустимые значения: ["open","increase","decrease","close","liquidation"]

- []buy.events.[]executedAt (number; обязательно)

[]buy.events.[]executedAt пример: 1767225599

[]buy.events.[]executedAt.Тип: number

[]buy.events.[]executedAt.Когда произошло событие, временная метка Unix в секундах.

- []buy.events.[]price (string · int32; обязательно)

[]buy.events.[]price пример: 1000000000

[]buy.events.[]price.Тип: string · int32

[]buy.events.[]price.Цена, по которой было исполнено событие, fp9 в необработанном виде — обменённая сумма в котируемой валюте, делённая на обменённую сумму в базовом активе.

[]buy.events.[]price.format: int32

[]buy.events.[]price.pattern: ^(?:-?[1-9][0-9]*|0)$

- []buy.events.[]size (string · int32; обязательно)

[]buy.events.[]size пример: 1000000000

[]buy.events.[]size.Тип: string · int32

[]buy.events.[]size.Абсолютный размер, перемещённый событием, в единицах базового актива, fp9 в необработанном виде.

[]buy.events.[]size.format: int32

[]buy.events.[]size.pattern: ^(?:-?[1-9][0-9]*|0)$

- []sell (object; обязательно)

[]sell пример: {
  "totalCount": 12,
  "events": [
    {
      "asset": "BTC",
      "direction": "long",
      "eventName": "open",
      "executedAt": 1767225599,
      "price": "1000000000",
      "size": "1000000000"
    }
  ]
}

[]sell.Тип: object

[]sell.Обязательные поля: totalCount, events

[]sell.Типы обязательных полей: totalCount (number; обязательно), events (object[]; обязательно)

[]sell.Сторона продажи: увеличения коротких позиций и уменьшения, закрытия и ликвидации длинных позиций.

- []sell.totalCount (number; обязательно)

[]sell.totalCount пример: 12

[]sell.totalCount.Тип: number

[]sell.totalCount.Количество всех событий этой стороны в свече.

- []sell.events (object[]; обязательно)

[]sell.events пример: [
  {
    "asset": "BTC",
    "direction": "long",
    "eventName": "open",
    "executedAt": 1767225599,
    "price": "1000000000",
    "size": "1000000000"
  }
]

[]sell.events.Тип: object[]

[]sell.events.До 5 последних событий этой стороны в свече, сначала самые новые.

[]sell.events.[]Тип: object

[]sell.events.[]Обязательные поля: asset, direction, eventName, executedAt, price, size

[]sell.events.[]Типы обязательных полей: asset (string; обязательно), direction (string · enum; обязательно), eventName (string · enum; обязательно), executedAt (number; обязательно), price (string · int32; обязательно), size (string · int32; обязательно)

- []sell.events.[]asset (string; обязательно)

[]sell.events.[]asset пример: BTC

[]sell.events.[]asset.Тип: string

[]sell.events.[]asset.Тикер базового актива рынка, на котором произошло событие.

- []sell.events.[]direction (string · enum; обязательно)

[]sell.events.[]direction пример: long

[]sell.events.[]direction.Тип: string · enum

[]sell.events.[]direction.Направление позиции, к которой относится событие.

[]sell.events.[]direction.Допустимые значения: ["long","short"]

- []sell.events.[]eventName (string · enum; обязательно)

[]sell.events.[]eventName пример: open

[]sell.events.[]eventName.Тип: string · enum

[]sell.events.[]eventName.Что обозначает маркер: `open` — для первого увеличения позиции, `increase` — для последующих, `decrease` — для частичного закрытия, `close` — для полного и `liquidation` — для ликвидации.

[]sell.events.[]eventName.Допустимые значения: ["open","increase","decrease","close","liquidation"]

- []sell.events.[]executedAt (number; обязательно)

[]sell.events.[]executedAt пример: 1767225599

[]sell.events.[]executedAt.Тип: number

[]sell.events.[]executedAt.Когда произошло событие, временная метка Unix в секундах.

- []sell.events.[]price (string · int32; обязательно)

[]sell.events.[]price пример: 1000000000

[]sell.events.[]price.Тип: string · int32

[]sell.events.[]price.Цена, по которой было исполнено событие, fp9 в необработанном виде — обменённая сумма в котируемой валюте, делённая на обменённую сумму в базовом активе.

[]sell.events.[]price.format: int32

[]sell.events.[]price.pattern: ^(?:-?[1-9][0-9]*|0)$

- []sell.events.[]size (string · int32; обязательно)

[]sell.events.[]size пример: 1000000000

[]sell.events.[]size.Тип: string · int32

[]sell.events.[]size.Абсолютный размер, перемещённый событием, в единицах базового актива, fp9 в необработанном виде.

[]sell.events.[]size.format: int32

[]sell.events.[]size.pattern: ^(?:-?[1-9][0-9]*|0)$

Пример



```json
[
  {
    "time": 1767225600,
    "buy": {
      "totalCount": 12,
      "events": [
        {
          "asset": "BTC",
          "direction": "long",
          "eventName": "open",
          "executedAt": 1767225599,
          "price": "1000000000",
          "size": "1000000000"
        }
      ]
    },
    "sell": {
      "totalCount": 12,
      "events": [
        {
          "asset": "BTC",
          "direction": "long",
          "eventName": "open",
          "executedAt": 1767225599,
          "price": "1000000000",
          "size": "1000000000"
        }
      ]
    }
  }
]
```