API
APIについて
一般的な使用法
注意:すべてのAPI URLは、api.kraken.comのドメインを使用する必要があります。
リクエストヘッダーを作成するときにユーザーエージェント文字列を指定する必要があります。指定されない場合、APIに接続できません。
Krakenでは、 「ブラウザの整合性チェック」 が有効化されています。
リクエストヘッダーにユーザーエージェントがないか、非標準のユーザーエージェントの場合、エラーが発生する可能性があります。
システムが許可する標準的なリクエストを作成できない場合は、IPアドレスとすべてのヘッダーを含め、試行しているリクエストのフルコピーを当社までお送りください。この情報を元に、調査を行います。
Publicメソッドでは、GETまたはPOSTのいずれかを使用することができます。
PrivateメソッドではPOSTを使用し、以下のように設定する必要があります。
HTTPヘッダー:
API-Key = APIキー API-Sign = (URI path + SHA256(nonce + POSTデータ))のHMAC-SHA512を使った署名およびbase64で解読されたAPI秘密鍵
POSTデータ:
nonce = 常に増加する符号なしの64ビット整数 otp = 2要素認証(未設定の場合は不要)
注: ナンスをより低い値にリセットすることはできませんので、以前使用したナンスより低い値が生成されないようにしてください。永続カウンターや100分の1秒以上の正確な数値での現在の時刻の使用がお勧めです。以前使用したナンス(EAPI:Invalid nonce) より低いナンスによる連続したリクエストが行われた場合、一時的に操作が無効となります。
注:リクエストは必ずしも時系列で処理されるわけではなく、またNTPによりコンピューターの内部時計が戻されナンスに問題を起こす場合があります。この問題に直面した場合、APIの設定ページよりナンスウィンドウを変更することが可能です。設定の数値は、ナンスの増加方法により異なります。 接続状況によっては、3-15秒間のネットワーク問題に対応する設定をお勧めします。
通貨資産を必要とするAPIコールは、ISOに登録されている名前がある場合はISO4217-A3の名前を使用し、未登録の場合は通常使用されている3文字もしくは、X-ISO4217-A3 コードhttp://www.ifex-project.org/)を使用してください。
サーバーからのレスポンスはJSON式で、以下の通り表示されます。
error = 以下の形式のエラーメッセージの配列 <char-severity code><string-error category>:<string-error type>[:<string-extra info>] severity code (深刻度コード)は、エラーの場合はE、または警告の場合はWと表示されます。 result = APIコールの結果(エラーが発生した場合に表示されない場合もあります)
注:数字を文字列として扱う場合は、標準データタイプにオーバーフローが発生する場合がありますのでご注意ください。
APIコールレートリミット
当社ではサイトの悪用、DoS攻撃、またはオーダーの注文・キャンセルを繰り返すことで発生するオーダーブックの操作等を防ぐための安全対策を取っています。
すべてのAPIユーザーは0から始まる「コールカウンター」を持っています。
アカウント明細・取引履歴コールではカウンターが2増加します。
注文・キャンセルではカウンターは変わりません。
他のすべてのAPIコールはカウンターが1増加します。
ユーザーのカウンターは2秒毎に少なくなりますが、ユーザーのAPIアクセスが最大制限を越えると15分間アクセスができなくなります。スターターアカウントを取得済みのユーザーはAPIのリミットが15で、3秒毎に1ずつ減少します。個人アカウントと個人アカウントを取得済みのユーザーはAPIのリミットが20で、個人アカウントの場合は2秒毎に1、プロアカウントの場合は毎秒1ずつそれぞれ減少します。
注文を出したりキャンセルしたりすることでカウンター数が増えることはありませんが、オーダーブックを意図的に操作することを防ぐため、別途リミットが設けられています。約定が目的である注文を出し、レートを毎秒1に留めていれば、通常リミットに達することはありません。
公開市場データ
サーバータイムを表示
URL: https://api.kraken.com/0/public/Time
結果:サーバータイム
unixtime = UNIXのタイプスタンプ rfc1123 = RFC 1123タイムフォーマット
注:サーバー、クライアント間の時差を概算するために使用します。
資産情報の表示
URL: https://api.kraken.com/0/public/Assets
入力
info = 取得する情報(任意): info = すべての情報(デフォルト) aclass = 資産クラス(任意): 通貨 (デフォルト) asset = 情報を取得する資産のリスト(カンマ区切り)(任意、 デフォルト = 付与された全資産クラス)
結果:資産名と情報の配列
<asset_name> = 資産名 altname = 代替名 aclass = 資産クラス decimals = 記録用の少数桁数 display_decimals = 表示される少数桁数
取引可能な資産ペアの取得
URL: https://api.kraken.com/0/public/AssetPairs
入力:
info = 取得する情報(任意): info = すべての情報(デフォルト) leverage = レバレッジ情報 fees = 手数料 margin = 証拠金 pair = 情報を取得する資産のカンマ区切りリスト(任意、 デフォルト = all)
結果:ペア名と情報の配列
<pair_name> = ペア名 altname = 代替ペア名 wsname = WebSocketのペア名(該当する場合) aclass_base = 基軸通貨の資産クラス base = 基軸通貨の資産ID aclass_quote = 決済通貨の資産クラス quote = 決済通貨の資産ID lot = 出来高のロットサイズ pair_decimals = ペアの少数桁数 lot_decimals = 出来高の少数桁数 lot_multiplier = 通貨出来高を得るために掛け合わせる出来高 leverage_buy = 購入の際に使用可能なレバレッジの配列 leverage_sell = 売却の際に使用可能なレバレッジの配列 fees = [出来高、手数料の割合]タプルの手数料の配列 fees_maker = [出来高、手数料の割合]タプルのメイカー手数料の配列(メイカー/テイカーの場合) fee_volume_currency = 手数料割引の計算に使われる通貨 margin_call = マージンコールレベル margin_stop = ストップアウト/ロスカットマージンレベル ordermin = ペアの最小注文量
注:資産ペアがメイカー/テイカーの手数料を採用する場合、テイカー手数料には"fees"が用いられ、メイカー手数料には"fees_maker"が用いられます。メイカー/テイカーが採用されないペアには、"fees"が用いられます。
ティッカー情報の取得
URL: https://api.kraken.com/0/public/Ticker
入力:
pair = 情報を取得する資産ペアのリスト(カンマ区切り)
結果:ペア名とティッカー情報の配列
<pair_name> = ペア名 a = 買い配列(<price>, <whole lot volume>, <lot volume>), b = 売り配列(<price>, <whole lot volume>, <lot volume>), c = 最終取引クローズ配列(<price>, <lot volume>), v = 出来高配列(<today>, <last 24 hours>), p = 出来高加重平均価格配列(<today>, <last 24 hours>), t = 取引数配列(<today>, <last 24 hours>), l = 低配列(<today>, <last 24 hours>), h = 高配列(<today>, <last 24 hours>), o = 本日の開始価格
注:本日の取引は、00:00:00 UTCに開始されます。
OHLCデータ
URL: https://api.kraken.com/0/public/OHLC
入力:
pair = OHLCデータを取得する資産ペア interval = タイムフレーム間隔(分単位)(任意): 1(デフォルト)、5、15、30、60、240、1440、10080、21600 since = 付与されたID以降のコミットされたOHLCデータを返す(任意、排他的)
結果:ペア名とOHLCデータの配列
<pair_name> = ペア名 配列入力のペア名配列(<time>, <open>, <high>, <low>, <close>, <vwap>, <volume>, <count>) last = 新しくコミットされたOHLCデータをポーリングして以降、使用されるID
注:OHLC 配列の最終項目は、現在のまだコミットしていないフレームになります。"since".の値に関わらず最終項目が、常に現在の最新情報となります。
オーダーブックの取得
URL: https://api.kraken.com/0/public/Depth
入力:
pair = 市場の厚みを取得する資産ペア count = 買い/売り注文の最大数(任意)
結果:ペア名と市場の厚みの配列
<pair_name> =ペア名 asks = 配列入力の買い側配列(<price>, <volume>, <timestamp>) bids = 配列入力の売り側配列(<price>, <volume>, <timestamp>)
最新の取引の取得
URL: https://api.kraken.com/0/public/Trades
入力:
pair = 取引データを取得する資産ペア since = 付与されたID以降の取引データを返す(任意、 排他的)
結果:ペア名と最新の取引データの配列
<pair_name> = ペア名 配列入力のペア名配列(<price>, <volume>, <time>, <buy/sell>, <market/limit>, <miscellaneous>) last = 新規取引データをポーリングして以降、使用されるID
最新のスプレッドデータの取得
URL: https://api.kraken.com/0/public/Spread
入力:
pair =スプレッドデータを取得する資産ペア since = 付与されたID以降のスプレッドデータのリターン(任意、包括的)
結果:ペア名と最新のスプレッドデータの配列
<pair_name> = ペア名 配列入力のペア名配列(<time>, <bid>, <ask>) last = 新規スプレッドデータを引き出して以降、使用されるID
注:"since" は包括的ですので、過去のセットと同時刻に返されたすべてのデータは、過去のセットのすべてを上書きしなければなりません。
ユーザーのデータ
アカウント残高の取得
URL: https://api.kraken.com/0/private/Balance
結果:資産名とアカウント残高の配列
取引残高の取得
URL: https://api.kraken.com/0/private/TradeBalance
入力:
aclass = 資産クラス(任意): 通貨 (デフォルト) asset = 残高を計算するベース資産 (デフォルト = ZUSD)
結果:取引残高情報の配列
eb = 取引総残高(全通貨を合算した残高) tb = 取引残高(有効証拠金として使用可能な通貨を合算した残高) m = オープンポジションの証拠金額 n = オープンポジションの評価損益 c = オープンポジションの原価基準 v = オープンポジションの現在の流動評価 e = 有効証拠金= 取引残高 + 評価損益 mf = 余剰証拠金 = 有効証拠金 - 当初証拠金(新規のオープンポジションに利用可能な最大証拠金) ml = 証拠金維持率= (有効証拠金 / 当初証拠金) × 100
注:流動評価に使用されるレートは、最良の売り値と買い値の中間点です。
オープン注文の取得
URL: https://api.kraken.com/0/private/OpenOrders
入力:
trades = 取引を出力に含むかどうか (任意、デフォルト = false) userref = 付与されたユーザー参照IDのみに結果を制限(任意)
結果:キーとしてのtxidを伴うオープン配列の注文情報の配列
refid = この注文を作成した参照注文トランザクションID userref = ユーザー参照ID status = 注文状況: pending = オーダーブックに記載保留の注文 open = オープン注文 closed = クローズされた注文 canceled = キャンセル済みの注文 expired = 期限切れの注文 opentm = 発注時のUNIXタイムスタンプ starttm = 注文開始時のUNIXタイムスタンプ(設定されていない場合は0) expiretm = 注文終了時のUNIXタイムスタンプ(設定されていない場合は0) descr = 注文の詳細 pair = 資産ペア type = 注文タイプ(買い/売り) ordertype = 注文タイプ(標準注文を追加をご覧ください) price = 1次価格 price2 = 2次価格 leverage = レバレッジの倍数 order = 注文の説明 close = 条件付きクローズ注文の説明(条件が設定されている場合) vol = 注文の出来高(oflagsでviqcが設定されていない場合、基軸通貨) vol_exec = 実行された出来高(oflagsでviqcが設定されていない場合、基軸通貨) cost = 合計費用(oflagsでviqcが設定されていない場合、決済通貨) fee = 合計手数料(決済通貨) price = 平均価格(oflagsでviqcが設定されていない場合、決済通貨) stopprice = ストップ価格(トレーリングスタップでは決済通貨) limitprice = 注文が実行される指値価格(指値注文の場合には決済通貨) misc = その他の情報(カンマ区切り) stopped = ストップ価格で実行 touched = タッチ価格で実行 liquidated = ロスカット partial = 部分的約定 oflags = 注文フラッグのカンマ区切りのリスト viqc = 決済通貨の出来高 fcib = 基軸通貨で手数料の支払いを希望(売り注文の場合のデフォルト) fciq = 決済通貨で手数料の支払いを希望(買い注文の場合のデフォルト) nompp = 成行価格保護なし trades = 注文に関連する取引IDの配列(取引情報がリクエストされ、データが利用できる場合)
注:別途注記のない場合、費用、手数料、価格、出来高は、通貨基準ではなく、資産ペアが基準となります。たとえば、資産ペアがスケール8のロットサイズを使用する場合、表示する通貨がスケール2のみであっても出来高はスケール8を使用します。同様に、資産ペアの価格スケールが5の場合は、基礎通貨がスケール8であってもスケールは5のままです。
クローズされた注文の取得
URL: https://api.kraken.com/0/private/ClosedOrders
入力:
trades = 取引を出力に含むかどうか (任意、デフォルト = false) userref = 付与されたユーザー参照IDに結果を制限(任意) start = 開始時のUNIXタイムスタンプ、または結果の注文TX ID(任意、排他的) end = 終了時のUNIXタイムスタンプ、または結果の注文TX ID(任意、包括的) ofs = 結果のオフセット closetime = 使用する時間(任意) open close both (デフォルト)
結果:注文情報の配列
closed = 注文情報の配列。オープン注文の取得をご覧ください。追加フィールド: closetm = 注文クローズ時のUNIXタイムスタンプ reason = 注文状況に関する追加情報(該当する場合) count = 基準に一致する利用可能な注文情報の量
注:注文TX IDに表示されている時刻は、UNIXタイムスタンプより正確です。注文TX IDに時刻がついている場合は、注文オープン時の時刻が使用されます。
注文情報のクエリ
URL: https://api.kraken.com/0/private/QueryOrders
入力:
trades = 取引を出力に含むかどうか (任意、デフォルト = false) userref = 付与されたユーザー参照IDに結果を制限(任意) txid = 情報をクエリするトランザクションIDのリスト(カンマ区切り、最大50)
結果: 注文情報に関連した配列
<order_txid> = オーダー情報 オープン注文の取得/クローズされた注文の取得をご覧ください。
取引履歴を取得
URL: https://api.kraken.com/0/private/TradesHistory
入力:
type = 取引のタイプ(任意) all = すべてのタイプ(デフォルト) any position = すべてのポジション(オープンまたはクローズ) closed position = クローズされたポジション closing position = ポジションの全部または一部をクローズする注文 no position = ポジションを伴わない取引 trades = ポジションに関連する取引を出力に含めるかどうか(任意、デフォルト = false) start = 開始時のUNIXタイムスタンプ、または結果の取引TX ID(任意、排他的) end = 終了時のUNIXタイムスタンプ、または結果の取引TX ID(任意、包括的) ofs = 結果のオフセット
結果:取引情報の配列
trades = TXIDをキーとした取引情報の配列 ordertxid = 取引の実行を伴った注文 pair = 資産ペア time = 取引のUNIXタイムスタンプ type = 注文のタイプ(買い/売り) ordertype = 注文タイプ price = 注文が(決済通貨)にて実行された平均価格 cost = 注文の合計費用(決済通貨) fee = 合計手数料If the trade opened a position, the follow fields are also present in the trade info:
(決済通貨) vol = 出来高(基軸通貨) margin = 当初証拠金(決済通貨) misc = その他の情報のリスト(カンマ区切り) closing = ポジションの全部または一部をクローズする取引 count = 基準に一致する利用可能な取引情報の数
取引でポジションをオープンした場合、次のフィールドは、取引情報にも存在します。
posstatus = ポジションのステータス(オープン/クローズ) cprice = ポジションのクローズした部分の平均価格(決済通貨) ccost = ポジションのクローズした部分の合計費用(決済通貨) cfee = ポジションのクローズした部分の合計手数料(決済通貨) cvol = ポジションのクローズした部分の合計手数料(決済通貨) cmargin = ポジションのクローズした部分で開放された合計証拠金(決済通貨) net = ポジションのクローズした部分の純利益/損失(決済通貨、決済通貨スケール) trades = ポジションをクローズした取引のリスト(該当する場合)
注:
- 別途注記のない場合、費用、手数料、価格、出来高は、通貨のスケールではなく、資産ペアのスケールとなります。
- 注文TX IDに付与された時刻は、UNIXタイムスタンプより正確です。
取引情報のクエリ
URL: https://api.kraken.com/0/private/QueryTrades
入力:
txid = 情報をクエリするトランザクションIDのリスト(カンマ区切り、最大20) trades = ポジションに関連する取引を出力に含めるかどうか(任意、デフォルト = false)
結果:取引情報に関連した配列
<trade_txid> = 取引情報。取引履歴を取得をご覧ください。
オープンポジションの取得
URL: https://api.kraken.com/0/private/OpenPositions
入力:
txid = 出力を制限するトランザクションIDのリスト(カンマ区切り) docalcs = 利益/損失の計算を含めるかどうか(任意、デフォルト = false) consolidation = ポジションデータを統合するもの(任意) market = 市場ペアに基づいてポジションを統合
結果: オープンポジションの情報に関連した配列
注:
統合オプションフィールドを使用すると、データの統合ビューが返されます。
<position_txid> =オープンポジション情報 ordertxid = 取引の実行した注文 pair = 資産ペア time = 取引のUNIXタイムスタンプ type = ポジションをオープンするために使用した注文のタイプ(買い/売り) ordertype = ポジションをオープンするために使用した注文のタイプ cost = ポジションのオープン時の費用(oflagsでviqcが設定されていない限り決済通貨) fee = ポジションのオープン時の手数料(決済通貨) vol = ポジションの出来高(oflagsでviqcが設定されていない限り基軸通貨) vol_closed = クローズされたポジション出来高(oflagsでviqcが設定されていない限り基軸通貨) margin = 当初証拠金(決済通貨) value = 残っているポジションの現在価値(docalcsがリクエストされた場合、決済通貨) net = 残っているポジションの評価損益(docalcsがリクエストされた場合、決済通貨、決済通貨スケール) misc = その他の情報(カンマ区切り) oflags = 注文フラッグのリスト(カンマ区切り) viqc = 決済通貨での出来高
注:別途注記のない場合、費用、手数料、価格、出来高は、通貨のスケールではなく、資産ペアのスケールとなります。
アカウント明細の取得
URL: https://api.kraken.com/0/private/Ledgers
入力:
aclass = 資産クラス(任意): currency(デフォルト) asset = 出力を制限する資産のリスト(カンマ区切り)(任意、デフォルト = all) type = 取得するアカウント明細のタイプ(任意): all(デフォルト) deposit withdrawal trade margin start = 開始時のUNIXタイムスタンプまたは結果の明細ID(任意、排他的) end = 終了時のUNIXタイムスタンプまたは結果の明細ID(任意、包括的) ofs = 結果のオフセット
結果: アカウント明細に関連した配列
<ledger_id> = アカウント明細 refid = 参照ID time = 明細のUNIXタイムスタンプ type = 明細のタイプ aclass = 資産クラス asset = 資産 amount = トランザクション金額 fee = トランザクション手数料 balance = 残高
注:明細IDに付与された時刻は、UNIXタイムスタンプより正確です。
明細のクエリ
URL: https://api.kraken.com/0/private/QueryLedgers
入力:
id = 情報をクエリする明細IDのリスト(カンマ区切り、最大20)
結果: 明細情報に関連した配列
<ledger_id> = 明細情報。明細情報の取得をご覧ください。
取引額の取得
URL: https://api.kraken.com/0/private/TradeVolume
入力:
pair = 手数料情報を取得する資産ペアのリスト(カンマ区切り)(任意) fee-info = 手数料情報を結果に含むか否か(任意)
結果:関連する配列
currency = 通貨額 volume = 現在の割引額 fees = 資産ペアと手数料レベル情報の配列(リクエストされた場合) fee = 現在の手数料(%) minfee = ペアの最小手数料(固定手数料でない場合) maxfee = ペアの最大手数料(固定手数料でない場合) nextfee = ペアの次の手数料レベル(固定手数料でない場合、最低の手数料レベルの場合はnil) nextvolume = 次の出来高レベル(固定手数料でない場合、最低の手数料レベルの場合はnil) tiervolume = 現在の出来高レベル(固定手数料でない場合、最低の手数料レベルの場合はnil) fees_maker =メイカー/テイカー手数料体系の資産ペアとメイカー手数料レベルの配列(リクエストされた場合) fee = 現在の手数料(%) minfee = ペアの最小手数料(固定手数料でない場合) maxfee = ペアの最大手数料(固定手数料でない場合) nextfee = ペアの次の手数料レベル(固定手数料でない場合、最低の手数料レベルの場合はnil) nextvolume = 次の出来高レベル(固定手数料でない場合、最低の手数料レベルの場合はnil) tiervolume = 現在の出来高レベル(固定手数料でない場合、最低の手数料レベルの場合はnil)
注:資産ペアがメイカー/テイカーの手数料を採用する場合、テイカー手数料には"fees"が用いられ、メイカー手数料には"fees_maker"が用いられます。メイカー/テイカーが採用されないペアには、"fees"が用いられます。
エクスポートのリクエスト/h3>
URL: https://api.kraken.com/0/private/AddExport
入力:
description = レポートの情報 report = レポートのタイプ(取引/明細) format = CSV/TSV形式(任意。デフォルト= CSV) fields = レポートに表示する項目のカンマ区切りリスト(任意、 デフォルト = all) 注:項目のオプションはレポートのタイプによります。 <trades> ordertxid time ordertype price cost fee vol margin misc ledgers <ledgers> refid time type aclass asset amount fee balance asset = 出力を制限する資産のリスト(カンマ区切り)(任意、デフォルト = all) starttm = レポート開始時間(任意、デフォルト= 直近1年間) <n> = 開始時のUNIXタイムスタンプ endtm = レポート終了時刻(任意、デフォルト=現時点) <n> = 終了時のUNIXタイムスタンプ
結果:
id = レポートID
エラー: エラーには次のものがあります(これらに限るものではありません)
EGeneral:Invalid arguments EQuery:Unknown asset pair
エクスポートのステータスの取得
URL: https://api.kraken.com/0/private/ExportStatus
入力:
report = レポートのタイプ(取引/明細)
結果:レポートとその情報の配列
id = レポートのID descr = レポートの情報 format = CSV/TSVのファイル形式 report = レポートのタイプ(取引/明細) status = 注文のステータス Queued = レポート作成のリクエストが送信された状態 Processing = レポートが作成されている状態 Processed = レポート作成が完了した状態 createdtm = レポートが作成された時間 expiretm = レポートが期限切れになる時間 starttm = レポート開始時刻 endtm = レポート終了時刻 completedtm = レポートが完了した時間 aclass = 資産クラス asset = カンマ区切りの資産リスト fields = カンマ区切りの項目 <trades> txid ordertxid pair time type ordertype price cost fee vol margin misc ledgers <ledgers> txid refid time type aclass asset amount fee balance
エラー: エラーには次のものがあります(これらに限るものではありません)
EGeneral:Invalid arguments
エクスポートレポートの取得
URL: https://api.kraken.com/0/private/RetrieveExport
入力:
id = レポートID
結果:レポートを含むbinary zip アーカイブ
注:コンテンツタイプが、json、text、 htmlでない場合、バイナリレポートが送信されます。コンテンツがこれらのタイプの場合には、エラーが発生する可能性があります。
注:レポートのタイプと選択された項目によっては、以下の項目が表示されます。* が表示されている項目は、常に表示されます。
<trades> *txid ordertxid *pair time *type ordertype price cost fee vol margin misc ledgers <ledgers> *txid refid time type aclass asset amount fee balance
エクスポートの消去
URL: https://api.kraken.com/0/private/RemoveExport
入力:
type = 消去のタイプ(キャンセル/削除) id = レポートのID
結果:コールの結果のブール
cancel/delete = 消去のタイプ
注:レポートがすでに作成されている場合にのみ、削除タイプを使用することが可能です。待機中や作成中のステータスの場合にはキャンセルをご使用ください。
エラー: エラーには次のものがあります(これらに限るものではありません)
EGeneral:Invalid arguments WExport:Already processed
注:該当レポートIDに既に削除やキャンセルのリクエストが存在する場合には、WExport:Already processedエラーが発生します。
プライベートユーザー取引
スタンダード注文の追加
URL: https://api.kraken.com/0/private/AddOrder
入力:
pair = 資産ペア type = 注文のタイプ(買い/売り) ordertype = 注文のタイプ: market limit(price = 指値価格) stop-loss(price = ストップロス価格) take-profit(price = テイクプロフィット価格) stop-loss-profit(price = ストップロス価格, price2 = テイクプロフィット価格) stop-loss-profit-limit(price = ストップロス価格, price2 = テイクプロフィット価格) stop-loss-limit(price = ストップロスを実行する価格, price2 = 実行指定された指値価格) take-profit-limit(price = テイクプロフィットを実行する価格, price2 = 実行指定された指値価格) trailing-stop(price = トレーリングストップオフセット) trailing-stop-limit(price = トレーリングストップオフセット, price2 = 実行指定された指値オフセット) stop-loss-and-limit(price = ストップロス価格, price2 = 指値価格) settle-position = ポジションの決済 price = 価格(任意、order typeに依存) price2 = 2次価格(任意、order typeに依存) volume = 注文出来高(ロット単位) leverage = 希望のレバレッジ倍数(任意、デフォルト = none) oflags = 注文フラグのリスト(カンマ区切り)(任意): viqc = 決済通貨での出来高(レバレッジを使用した注文には使用不可) fcib = 基軸通貨で手数料の支払いを希望する場合 fciq = 決済通貨で手数料の支払いを希望する場合 nompp = 成行注文停止機能なし post = 指値注文のみ実行(指値注文を実行した場合にのみ使用可能) starttm = スケジュールされた開始時間(任意): 0 = 現在(デフォルト) +<n> = 開始時間を現在から <n> 秒後にスケジュール <n> = 開始時間のUNIXタイムスタンプ expiretm = 期限切れの時間(任意): 0 = 期限なし(デフォルト) +<n> = 現在から <n> 秒後に期限切れ <n> = 期限切れ時間のUNIXタイムスタンプ userref = ユーザー参照ID。32ビットの符号つき数字(任意) validate = 入力のみを認証する。注文を送信しない(任意) 注文が約定した場合に、クローズ注文をシステムに追加するオプション: close[ordertype] = 注文タイプ close[price] = 価格 close[price2] = 2次価格
結果:
descr = 注文説明情報 order = 注文説明 close = 条件付きクローズ注文の説明(条件付きクローズが設定されている場合) txid = 注文のトランザクションIDの配列(注文が正常に追加された場合)
エラー:エラーには次のものがあります(これらに限るものではありません)。
EGeneral:Invalid arguments EService:Unavailable ETrade:Invalid request EOrder:Cannot open position EOrder:Cannot open opposing position EOrder:Margin allowance exceeded EOrder:Margin level too low EOrder:Insufficient margin (exchange does not have sufficient funds to allow margin trading) EOrder:Insufficient funds (insufficient user funds) EOrder:Order minimum not met (volume too low) EOrder:Orders limit exceeded EOrder:Positions limit exceeded EOrder:Rate limit exceeded EOrder:Scheduled orders limit exceeded EOrder:Unknown position
注:
- 資産ペア価格、ロット、レバレッジの仕様については、取引可能な資産ペアをご覧ください。
- 価格の前には+、-、または#を付け、その価格が相対価格であるかどうかを指定できます(例外: トレーリングストップは常に相対価格となります)。+ 現在提供されている価格に金額を加算します。- 現在提供されている価格に金額を減算します。#は、使用するタイプと注文タイプに応じて、現在提供されている価格に対し、金額を加算または減算します。相対価格は%を末尾に付けて、提供されている価格の割合として相対価格を指定できます。
- レバレッジを使用した注文では、0 をボリュームとして指定すると、ポジションをクローズするのに必要なボリュームを自動的に設定します。
- "EOrder:Trading agreement required"のエラーが表示された場合には、APIキーの管理画面にて詳細をご確認ください。
オープン注文のキャンセル
URL: https://api.kraken.com/0/private/CancelOrder
入力:
txid = トランザクションID
結果:
count = キャンセルされた注文の数 pending = 設定された場合、注文のキャンセルは保留中です。
注:txidはユーザー参照IDの場合があります。
個人ユーザーの資金調達
注:これは暫定的な資金調達のAPIであり、将来的に更新される可能性があります。 APIの使用方法の詳細については APIページをご覧ください。
入金方法の取得
URL: https://api.kraken.com/0/private/DepositMethods
入力:
aclass = 資産クラス(任意): currency (デフォルト) asset = 入金される資産
結果: 入金方法に関連した配列:
method = 入金方法の名前 limit = 現時点で入金できる最大金額。無制限の場合にはfalse fee = 手数料金額 address-setup-fee = 入金方法にアドレス設定手数料があるか否か(任意)
入金アドレスの取得
URL: https://api.kraken.com/0/private/DepositAddresses
入力:
aclass = 資産クラス(任意): currency (デフォルト) asset = 入金される資産 method = 入金方法の名前 new = 新しいアドレスを作成するか否か(任意、デフォルト = false)
結果: 入金アドレスに関連した配列:
address = 入金アドレス expiretm = unixのタイムスタンプでの有効期限、ずっと有効な場合は0 new = アドレスが使用されたか否か
最近の入金のステータスを取得
URL: https://api.kraken.com/0/private/DepositStatus
入力:
aclass = 資産クラス(任意): currency(デフォルト) asset = 入金される資産 method = 入金方法の名前
結果:入金ステータス情報の配列:
method = 使用された入金方法の名前 aclass = 資産クラス asset = 資産のX-ISO4217-A3 コード refid = 参照ID txid = 送金ID info = 送金情報 amount = 入金金額 fee = 支払われた手数料金額 time = リクエスト時のunixのタイムスタンプ status = 入金ステータス status-prop =追加のステータス情報 (存在する場合のみ) return = Krakenによる返金送金 onhold = 入金の保留ステータスについて、詳しくは IFEX金融取引ステータスをご覧下さい。
出金情報の取得
URL: https://api.kraken.com/0/private/WithdrawInfo
入力:
aclass = 資産クラス(任意): currency(デフォルト) asset = 出金される資産 key = アカウントに設定されている出金キーの名前 amount = 出金金額
結果: 出金情報に関連した配列:
method = 使用される出金方法の名前 limit = 現時点で出金できる最大金額 fee = 手数料金額
資金を出金
URL: https://api.kraken.com/0/private/Withdraw
入力:
aclass = 資産クラス(任意): currency (デフォルト) asset = 出金される資産 key = アカウントに設定されている出金キーの名前 amount = 手数料を含めた出金金額
結果:出金送金に関連した配列:
refid = 参照ID
最近の出金のステータスを取得
URL: https://api.kraken.com/0/private/WithdrawStatus
入力:
aclass = 資産クラス(任意): currency (デフォルト) asset = 出金される資産 method = 出金方法の名前(任意)
結果: 出金ステータス情報の配列:
method = 使用された出金方法の名前 aclass = 資産クラス asset = 資産のX-ISO4217-A3コード refid = 参照ID txid = 送金ID info =送金情報 amount = 出金金額 fee = 支払われた手数料金額 time = リクエスト時のunixのタイムスタンプ status = 出金ステータス status-prop = 追加のステータス情報 (存在する場合のみ) cancel-pending = キャンセルのリクエスト canceled = キャンセル済 cancel-denied = キャンセルがリクエストされたが拒否 return = Krakenによる返金送金。キャンセルは不可 onhold = 出金の保留ステータスについて、詳しくは IFEX金融取引ステータスをご覧下さい。
出金のキャンセルをリクエストする
URL: https://api.kraken.com/0/private/WithdrawCancel
入力:
aclass = 資産クラス(任意): currency(デフォルト) asset = 出金される資産 refid = 出金の参照ID
結果: 成功の場合はtrue
注意: キャンセルの実行は保証されません。 これによりキャンセルのリクエストがされますが、出金の処理段階によっては出金をキャンセルできない場合があります。
ウォレット間の送金
URL: https://api.kraken.com/0/private/WalletTransfer
入力:
asset = 出金される資産 to = 先物ウォレットに資金を送金するウォレット(デフォルト) from =スポットウォレットから資金を送金するウォレット(デフォルト) amount = 手数料も含めた出金金額
結果: 送金取引に関連した配列:
refid = 参照ID
WebSocketの認証
APIクライアントは、WebSocketプライベートエンドポイントに接続するために、次のREST APIエンドポイント「GetWebSocketsToken」を介して認証「トークン」を要求する必要があります。トークンは作成後15分以内に使用する必要があります。 WebSockets APIプライベートメッセージ(openOrdersまたはownTrades)への接続が維持されると、トークンは期限切れになりません。
URL: https://api.kraken.com/0/private/GetWebSocketsToken
結果のトークンは、新しいプライベートWebSocketフィードサブスクリプションの「トークン」フィールドで提供される必要があります。
{ "event": "subscribe", "subscription": { "name": "ownTrades", "token": "secretwstoken123" } }
認証トークンを生成できるようにするには、APIキーの作成中に「WebSocket APIへのアクセス」権限を選択してください。
APIクライアントの例
以下は、ユーザーが独自のAPIクライアントを開発する場合に使用できるAPIクライアントコードライブラリのサンプルです。Paywardまたは第三者のAPI作成者は、APIのバグまたは不正な使用による損失について一切の責任を負わないことをご理解ください。Paywardは、第三者のコードについては、掲載前に安全性の初回検証を行っていますが、それ以降に加えられた変更については保証できません。この件に関しご質問がある場合はカスタマーサポートまでお問い合わせください。
C
第三者によるコードhttps://github.com/hANSIc99/Kraken_C_APIを参照してください。
C#
第三者によるコードhttps://bitbucket.org/arrivets/krakenapiを参照してください。
C++
第三者によるコードhttps://github.com/voidloop/krakenapiを参照してください。
GO
第三者によるコードhttps://github.com/Beldur/kraken-go-api-clientを参照してください。
Node.JS
第三者によるコードhttps://github.com/nothingisdead/npm-kraken-apiを参照してください。
PERL
第三者によるコードhttp://search.cpan.org/~philippe/Finance-Bank-Kraken-0.1/を参照してください。
Python 3
第三者によるコードhttps://github.com/veox/python3-krakenexを参照してください。
Python 2
第三者によるコードhttps://github.com/veox/python2-krakenexを参照してください。
Ruby
第三者によるコードhttps://github.com/jonatack/kraken_ruby_clientを参照してください。
PHP
Krakenチームは、Kraken REST APIとのインタフェース用に、基本的なPHPライブラリを提供しています。ソースと使用例についてはPaywardのkraken-api-client github repositoryでご確認いただけます。これらはMITがライセンスを保有しています。
ライブラリ
PHPクライアントを使用してKraken REST APIを呼び出すには、このライブラリクラスをご使用ください。APIメソッドの正しいURL pathを自動的に判別し、各リクエストにnonceを生成し、APIの秘密鍵と生成されたnonceを使用して署名済みのヘッダーを追加します。
<?php /** * KrakenのREST API用の参照実装 * * 詳細は https://www.kraken.com/help/api をご覧ください。 * * * MITライセンス(MIT) * * Copyright (c) 2013 Payward, Inc * * 以下に定める条件に従い、本ソフトウェアおよび関連文書のファイル(以下「ソフト * ウェア」)の複製を取得するすべての人に対し、ソフトウェアを無制限に扱うことを * 無償で許可します。これには、ソフトウェアの複製を使用、複写、変更、結合、掲載、 * 頒布、サブライセンス、および/または販売する権利、およびソフトウェアを提供する * 相手に同じことを許可する権利も無制限に含まれます。 * *上記の著作権表示および本許諾表示を、ソフトウェアのすべての複製または重要な部分 *に記載するものとします。 * * ソフトウェアは「現状のまま」で、明示であるか暗黙であるかを問わず、何らの保証も * なく提供されます。ここでいう保証とは、商品性、特定の目的への適合性、および権利 * 非侵害についての保証も含みますが、それに限定されるものではありません。 作者ま * たは著作権者は、契約行為、不法行為、またはそれ以外であろうと、ソフトウェアに起 * 因または関連し、あるいはソフトウェアの使用またはその他の扱いによって生じる一切 * の請求、損害、その他の義務について何らの責任も負わないものとします */ class KrakenAPIException extends ErrorException {}; class KrakenAPI { protected $key; // API key protected $secret; // API secret protected $url; // API base URL protected $version; // API version protected $curl; // curl handle /** * Constructor for KrakenAPI * * @param string $key API key * @param string $secret API secret * @param string $url base URL for Kraken API * @param string $version API version * @param bool $sslverify enable/disable SSL peer verification.disable if using beta.api.kraken.com */ function __construct($key, $secret, $url='https://api.kraken.com', $version='0', $sslverify=true) { $this->key = $key; $this->secret = $secret; $this->url = $url; $this->version = $version; $this->curl = curl_init(); curl_setopt_array($this->curl, array( CURLOPT_SSL_VERIFYPEER => $sslverify, CURLOPT_SSL_VERIFYHOST => 2, CURLOPT_USERAGENT => 'Kraken PHP API Agent', CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true) ); } function __destruct() { curl_close($this->curl); } /** * Query public methods * * @param string $method method name * @param array $request request parameters * @return array request result on success * @throws KrakenAPIException */ function QueryPublic($method, array $request = array()) { // build the POST data string $postdata = http_build_query($request, '', '&'); // make request curl_setopt($this->curl, CURLOPT_URL, $this->url .'/' .$this->version .'/public/' .$method); curl_setopt($this->curl, CURLOPT_POSTFIELDS, $postdata); curl_setopt($this->curl, CURLOPT_HTTPHEADER, array()); $result = curl_exec($this->curl); if($result===false) throw new KrakenAPIException('CURL error:' . curl_error($this->curl)); // decode results $result = json_decode($result, true); if(!is_array($result)) throw new KrakenAPIException('JSON decode error'); return $result; } /** * Query private methods * * @param string $path method path * @param array $request request parameters * @return array request result on success * @throws KrakenAPIException */ function QueryPrivate($method, array $request = array()) { if(!isset($request['nonce'])) { // generate a 64 bit nonce using a timestamp at microsecond resolution // string functions are used to avoid problems on 32 bit systems $nonce = explode(' ', microtime()); $request['nonce'] = $nonce[1] . str_pad(substr($nonce[0], 2, 6), 6, '0'); } // build the POST data string $postdata = http_build_query($request, '', '&'); // set API key and sign the message $path = '/' .$this->version .'/private/' .$method; $sign = hash_hmac('sha512', $path . hash('sha256', $request['nonce'] .$postdata, true), base64_decode($this->secret), true); $headers = array( 'API-Key:' .$this->key, 'API-Sign:' . base64_encode($sign) ); // make request curl_setopt($this->curl, CURLOPT_URL, $this->url .$path); curl_setopt($this->curl, CURLOPT_POSTFIELDS, $postdata); curl_setopt($this->curl, CURLOPT_HTTPHEADER, array()); $result = curl_exec($this->curl); if($result===false) throw new KrakenAPIException('CURL error:' . curl_error($this->curl)); // decode results $result = json_decode($result, true); if(!is_array($result)) throw new KrakenAPIException('JSON decode error'); return $result; } }
使用例
以下は、KrakenAPIライブラリクラスの初期化に関係する手順と、APIメソッドの呼び出しを示したものです。形式化された結果セットは各APIコールスニペットの下に表示されています。
初期化
KrakenAPIオブジェクトのインスタンス化を作成する場合には、ライブラリファイルを含め、APIキーと秘密鍵を提供します。
<?php require_once 'KrakenAPIClient.php'; $kraken = new KrakenAPI('YOUR API KEY', 'YOUR API SECRET');
メソッド呼び出し
アクティブな資産とプロパティの公開リストへのクエリ:
$res = $kraken->QueryPublic('Assets'); print_r($res);
返り値の資産はISO-4217-A3-Xの名前で表示されます。以下は出力例です。
Array ( [error] => Array ( ) [result] => Array ( [XXBT] => Array ( [aclass] => currency [altname] => XBT [decimals] => 10 [display_decimals] => 5 ) [XLTC] => Array ( [aclass] => currency [altname] => LTC [decimals] => 10 [display_decimals] => 5 ) [XXRP] => Array ( [aclass] => currency [altname] => XRP [decimals] => 8 [display_decimals] => 5 ) [ZEUR] => Array ( [aclass] => currency [altname] => EUR [decimals] => 4 [display_decimals] => 2 ) ... )
XBT/USDペアのパブリックティッカー情報のクエリ:
$res = $kraken->QueryPublic('Ticker', array('pair' => 'XXBTZUSD')); print_r($res);
出力例:
Array ( [error] => Array ( ) [result] => Array ( [XXBTZUSD] => Array ( [a] => Array ( [0] => 106.09583 [1] => 111 ) [b] => Array ( [0] => 105.53966 [1] => 4 ) [c] => Array ( [0] => 105.98984 [1] => 0.13910102 ) ... ) )
2013-08-07T18:20:42+00:00以降の、最新のXBT/EURペアの取引をクエリする:
注:「since」パラメーターは将来変更になる場合があります。例えばその精度が変更になる場合があるか、またはタイムスタンプを表示しなくなる場合もあります。最善の方法は、結果セットに返却される「last」値をベースにすることです。
$res = $kraken->QueryPublic('Trades', array('pair' => 'XXBTZEUR', 'since' => '137589964200000000')); print_r($res);
出力例:
Array ( [error] => Array ( ) [result] => Array ( [XXBTZEUR] => Array ( [0] => Array ( [0] => 78.60500 [1] => 2.03990000 [2] => 1375897934.1176 [3] => s [4] => m [5] => ) [1] => Array ( [0] => 79.41809 [1] => 2.02203000 [2] => 1375898123.0771 [3] => b [4] => m [5] => ) [2] => Array ( [0] => 79.86999 [1] => 7.00000000 [2] => 1375898123.2587 [3] => b [4] => m [5] => ) ... ) [last] => 137589925237491170 ) )
プライベート資産残高のクエリ:
$res = $kraken->QueryPrivate('Balance'); print_r($res);
出力例:
Array ( [error] => Array ( ) [result] => Array ( [ZUSD] => 3415.8014 [ZEUR] => 155.5649 [XXBT] => 149.9688412800 [XXRP] => 499889.51600000 ) )
プライベートオープン注文と、それに含まれる関連取引のクエリ:
$res = $kraken->QueryPrivate('OpenOrders', array('trades' => true)); print_r($res);
出力例:
Array ( [error] => Array ( ) [result] => Array ( [open] => Array ( [O7ICPO-F4CLJ-MVBLHC] => Array ( [refid] => [userref] => [status] => open [opentm] => 1373750306.9819 [starttm] => 0 [expiretm] => 0 [descr] => Array ( [order] => sell 3.00000000 XBTUSD @ limit 500.00000 ) [vol] => 3.00000000 [vol_exec] => 0.00000000 [cost] => 0.00000 [fee] => 0.00000 [price] => 0.00000 [misc] => [oflags] => ) ... ) ) )
標準注文の追加:指値価格$120で 1.123 XBT/USD ペアの売り注文をする場合。
$res = $kraken->QueryPrivate('AddOrder', array( 'pair' => 'XXBTZUSD', 'type' => 'sell', 'ordertype' => 'limit', 'price' => '120', 'volume' => '1.123' )); print_r($res);
出力例:
Array ( [error] => Array ( ) [result] => Array ( [descr] => Array ( [order] => sell 1.12300000 XBTUSD @ limit 120.00000 ) [txid] => Array ( [0] => OAVY7T-MV5VK-KHDF5X ) ) )
標準注文の追加: 2013-08-12T09:27:22+0000 に成行価格で €300相当のXBT買い注文をする場合
$res = $kraken->QueryPrivate('AddOrder', array( 'pair' => 'XXBTZEUR', 'type' => 'buy', 'ordertype' => 'market', 'oflags' => 'viqc', 'volume' => '300', 'starttm' => '1376299642' )); print_r($res);
出力例:
Array ( [error] => Array ( ) [result] => Array ( [descr] => Array ( [order] => buy 300.00000000 XBTEUR @ market ) [txid] => Array ( [0] => ONQN65-L2GNR-HWJLF5 ) ) )
標準注文の追加:指値価格 $101.9901で2.12345678 XBT/USDペアの買い、レバレッジ 2:1、ストップロス、テイクプロフィット注文: 逆指値 -5% 損失、利益確定 +$10 価格上昇(#表記により、符号付ストップ/ロス価格は自動的に決定されます)の注文をする場合
$res = $kraken->QueryPrivate('AddOrder', array( 'pair' => 'XXBTZUSD', 'type' => 'buy', 'ordertype' => 'limit', 'price' => '101.9901', 'volume' => '2.12345678', 'leverage' => '2:1', 'close' => array( 'ordertype' => 'stop-loss-profit', 'price' => '#5%', // stop loss price (relative percentage delta) 'price2' => '#10' // take profit price (relative delta) ) )); print_r($res);
出力例:
Array ( [error] => Array ( ) [result] => Array ( [descr] => Array ( [order] => buy 2.12345678 XBTUSD @ limit 101.99010 with 2:1 leverage [close] => close position @ stop loss -5.0000%, take profit +10.00000 ) [txid] => Array ( [0] => OFMYYE-POAPQ-63IMWL ) ) )