# get_aggregate_price

*([PriceOracle amendment](/ja/resources/known-amendments#priceoracle))*

[[ソース]](https://github.com/XRPLF/rippled/blob/master/src/ripple/rpc/handlers/GetAggregatePrice.cpp)

`get_aggregate_price`メソッドは、指定された`Oracle`オブジェクトの集計価格を取得し、平均値、中央値、整形された平均値の3つの価格情報を返します。

## リクエストフォーマット

リクエストの例:

WebSocket

```json
{
  "command": "get_aggregate_price",
  "ledger_index": "current",
  "base_asset": "XRP",
  "quote_asset": "USD",
  "trim": 20,
  "oracles": [
    {
      "account": "rp047ow9WcPmnNpVHMQV5A4BF6vaL9Abm6",
      "oracle_document_id": 34
    },
    {
      "account": "rp147ow9WcPmnNpVHMQV5A4BF6vaL9Abm7",
      "oracle_document_id": 56
    },
    {
      "account": "rp247ow9WcPmnNpVHMQV5A4BF6vaL9Abm8",
      "oracle_document_id": 2
    },
    {
      "account": "rp347ow9WcPmnNpVHMQV5A4BF6vaL9Abm9",
      "oracle_document_id": 7
    },
    {
      "account": "rp447ow9WcPmnNpVHMQV5A4BF6vaL9Abm0",
      "oracle_document_id": 109
    }
  ]
}
```

JSON-RPC

```json
{
  "method": "get_aggregate_price",
  "params": [
    {
      "ledger_index": "current",
      "base_asset": "XRP",
      "quote_asset": "USD",
      "trim": 20,
      "oracles": [
        {
          "account": "rNZ9m6AP9K7z3EVg6GhPMx36V4QmZKeWds",
          "oracle_document_id": 34
        },
        {
          "account": "rMVKq8zrVsJZQFEiTARyC6WfZznhhLMcNi",
          "oracle_document_id": 100
        },
        {
          "account": "r92kJTnUbUUq15t2BBZYGYxY79RnNc7rLQ",
          "oracle_document_id": 2
        }
      ]
    }
  ]
}
```

リクエストには以下のパラメータが含まれています:

| フィールド | 型 | 必須? | 説明 |
|  --- | --- | --- | --- |
| `base_asset` | 文字列 | はい | 価格を計算する資産の通貨コード。 |
| `quote_asset` | 文字列 | はい | 基軸資産の価格を計算する資産の通貨コード。 |
| `trim` | 数値 | いいえ | 外れ値を削除する割合。有効な削除範囲は1-25。削除範囲が含まれている場合、APIは整形された平均値の統計情報を返します。 |
| `trim_threshold` | 数値 | いいえ | 古い価格データをフィルタリングする秒単位の時間範囲を定義します。デフォルト値は0で、データをフィルタリングしません。 |
| `oracles` | 配列 | はい | Oracleを識別するオブジェクトの配列。Oracleオブジェクトは1から200のOracleの識別子をリストする必要があります。 |


`oracles`配列の各メンバーは、次のフィールドを持つOracleオブジェクトです。

| フィールド | 型 | 必須？ | 説明 |
|  --- | --- | --- | --- |
| `account` | 文字列 | はい | `Oracle`オブジェクトを制御するXRPLアカウント |
| `oracle_document_id` | 数値 | はい | `Account`の価格Oracleの一意の識別子 |


## レスポンスフォーマット

レスポンスの例:


```json
{
  "result": {
    "entire_set": {
      "mean": "0.78",
      "size": 3,
      "standard_deviation": "0.03464101615137754"
    },
    "ledger_current_index": 3677185,
    "median": "0.8",
    "time": 1724877762,
    "trimmed_set": {
      "mean": "0.78",
      "size": 3,
      "standard_deviation": "0.03464101615137754"
    },
    "validated": false
  },
  "status": "success",
  "type": "response"
}
```

| フィールド | 型 | 説明 |
|  --- | --- | --- |
| `entire_set` | オブジェクト | 収集されたOracleの価格の統計情報。 |
| `entire_set.mean` | 文字列 - 数値 | 単純な平均値。 |
| `entire_set.size` | 数値 | 平均値を計算するデータセットのサイズ。 |
| `entire_set.standard_deviation` | 文字列 - 数値 | 標準偏差。 |
| `trimmed_set` | オブジェクト | 整形されたOracleの価格の統計情報。`trim`フィールドがリクエストに指定されている場合にのみ表示されます。 |
| `trimmed_set.mean` | 文字列 - 数値 | 整形されたデータの単純な平均値。 |
| `trimmed_set.size` | 数値 | 整形された平均値を計算するデータセットのサイズ。 |
| `trimmed_set.standard_deviation` | 文字列 - 数値 | 整形されたデータの標準偏差。 |
| `time` | 数値 | すべての`LastUpdateTime`値の中で最も新しいタイムスタンプ。Unix時間で表されます。 |


注記
- 指定されたOracleの最新の`Oracle`オブジェクトが取得されます。
- すべてのオブジェクトの中で最も新しい`LastUpdateTime`が上限時間として選択されます。
- `Oracle`オブジェクトは、指定された`base_asset`/`quote_asset`ペアを含み、`AssetPrice`フィールドを持ち、その`LastUpdateTime`が指定された時間範囲内である場合、集計データセットに含まれます。
- `Oracle`オブジェクトが指定されたトークンペアの`AssetPrice`を含まない場合、最大3つの過去の`Oracle`オブジェクトが調査され、要件を満たす最新のものが含まれます。


## 起こりうるエラー

- すべての[汎用エラータイプ](/ja/docs/references/http-websocket-apis/api-conventions/error-formatting#%E6%B1%8E%E7%94%A8%E3%82%A8%E3%83%A9%E3%83%BC)。
- `invalidParams` - 1つ以上のフィールドが正しく指定されていないか、1つ以上の必須フィールドが欠けています。
- `internal` - `trim_threshold`の設定によりすべての価格が削除された。
- `objectNotFound` - データセットに価格がない。
- `oracleMalformed` - `oracles`配列が不正。少なくとも1つのオブジェクトフィールドが正しく指定されていないか、オブジェクトの数が1から200の範囲外です。
-