XRPL DEXのロウソク足を取得する
XRP Ledgerとは
XRP Ledgerは、分散型のパブリックブロックチェーンです。XRP Ledgerは、DEX機能やNFT機能をはじめとした様々なネイティブ機能を備えており、日々進化を続けています。
この記事ではXRPL DEXのロウソク足情報の取得方法について説明します。
XRPL DEX自体の解説については次の記事をご覧ください。
book_changes
コマンド
XRPL DEXのロウソク足情報はbook_changes
コマンドを利用することで取得することができます。
記事執筆時点では、book_changes
コマンドに関するドキュメントは存在していませんが、次のIssueが存在します。
book_changes
コマンドを使ってみる
book_changes
コマンドは次のような形式で利用します。
import { Client } from 'xrpl'
const client = new Client("wss://s2.ripple.com")
const main = async () => {
await client.connect()
const response = await client.request({
command: 'book_changes',
ledger_index: "validated",
})
console.log(response.result)
await client.disconnect()
}
main()
出力される結果(response.result)は次のような形式になります
{
changes: [
{
close: '495049.5049504958',
currency_a: 'XRP_drops',
currency_b: 'rEn9eRkX25wfGPLysUMAvZ84jAzFNpT5fL/USD',
high: '495049.5049504958',
low: '495049.5049504958',
open: '495049.5049504958',
volume_a: '32307193',
volume_b: '65.26052985999991'
},
{
close: '1649998.270906047',
currency_a: 'XRP_drops',
currency_b: 'rcEGREd8NmkKRE8GE424sksyt1tJVFZwu/5553444300000000000000000000000000000000',
high: '1649998.270906047',
low: '1649998.270906047',
open: '1649998.270906047',
volume_a: '2995886697',
volume_b: '1815.69081'
},
{
close: '1809330.142969804',
currency_a: 'XRP_drops',
currency_b: 'rhub8VRN55s94qWKDv6jmDy1pUykJzF3wq/EUR',
high: '1809330.142969804',
low: '1809330.142969804',
open: '1809330.142969804',
volume_a: '32437761',
volume_b: '17.928049850956'
},
{
close: '1617798.845064956',
currency_a: 'XRP_drops',
currency_b: 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B/USD',
high: '1617798.845064956',
low: '1617798.845064956',
open: '1617798.845064956',
volume_a: '32307193',
volume_b: '19.9698455086379'
},
{
close: '0.9009009009009181',
currency_a: 'rhub8VRN55s94qWKDv6jmDy1pUykJzF3wq/EUR',
currency_b: 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B/USD',
high: '0.9009009009009181',
low: '0.9009009009009181',
open: '0.9009009009009181',
volume_a: '17.963905950658',
volume_b: '19.93993560523'
}
],
ledger_hash: '24F9559E1BC238C42BC170BE3344AF270B4BA3050ACAC6F86141F392287CB5EA',
ledger_index: 84858228,
ledger_time: 756927592,
type: 'bookChanges'
}
changes
フィールドに指定したレジャーで変更があったロウソク足情報が配列形式で格納されています。
特定期間内のレジャー情報を取得し結合することで、その期間内で変更があったロウソク足情報(1時間足、日足など)を取得することができます。
ただし、パブリックノードではRate Limitが存在するため、独自のノードを利用することが非常に推奨されます。
通貨のフォーマット
currency_a
とcurrency_b
フィールドには、それぞれの通貨を一意に識別する文字列が格納されています。
通貨がネイティブトークンであるXRPの場合、XRP_drops
が設定されます。XRPの最小単位drops(0.000001XRP=1drop)で通貨の金額が利用されることが分かります。
それ以外のトークンの場合、issuer
とcurrency
を組み合わせた形式で設定されます。
例えば、rhub8VRN55s94qWKDv6jmDy1pUykJzF3wq/EUR
は、rhub8VRN55s94qWKDv6jmDy1pUykJzF3wq
が発行したEUR
トークンを表します。
ロウソク足の情報
open
、close
、high
、low
、volume_a
、volume_b
フィールドには、それぞれロウソク足の始値、終値、高値、安値、通貨Aの取引量、通貨Bの取引量が格納されています。
open
、close
、high
、low
フィールドには、通貨A/通貨Bでのレートが格納されています。
このコマンドは1レジャーの情報を取得するため、1レジャー内で同じ通貨ペアに複数回の変更がない場合、open
、close
、high
、low
フィールドの値は同じになります。
まとめ
book_changes
コマンドを利用することで、XRPL DEXのロウソク足情報を取得することができます。
このコマンドを活用することで次のようなDEXインターフェースを作成することができます。
興味を持たれた方はXRP Ledger開発者のDiscordチャンネルへ是非お越しください!
日本語チャンネルもありますので、英語ができなくても大丈夫です!
また、XRPL JapanのDiscordサーバもありますので、こちらもぜひご参加ください!
私のX/Twitterアカウントはこちら!
Discussion