NAV Navbar
python javascript
  • 紹介
  • 認証
  • 公開API
  • マーケット情報
  • アカウントと資金
  • 注文
  • エラーコード
  • 紹介

    FCoin取引プラットフォームの利用方法をご紹介します。FCoinが提供するAPIを使用して、FCoin取引プラットフォームに簡単にアクセスできます。

    認証

    下記コードを使用して、ユーザー認証を行います:

    import fcoin
    
    api = fcoin.authorize('key', 'secret', timestamp)
    
    const fcoin = require('fcoin');
    
    let api = fcoin.authorize('key', 'secret', timestamp);
    

    FCoinはAPI キーとAPIシークレットを使用して、認証を行います。 設定センターにて,開発者にご登録してください。ご登録いただいた後、API キーとAPI シークレット情報をご利用いただけます。

    FCoinのAPI利用について,公開API以外に、API キー及び署名が必要となります。

    アクセス制限

    現在、アクセスの頻度はユーザーごとに100回 / 10秒,将来はサービスごと、アクセスの頻度を制限する予定です。

    API 署名

    署名を行うため、あらかじめ下記データをご用意してください:

    HTTP_METHOD + HTTP_REQUEST_URI + TIMESTAMP + POST_BODY

    接続が確立後, Base64エンコーディングが必要です。エンコーディング後のデータに対して、 HMAC-SHA1 署名を行います。また、デジタル署名に対して、Base64エンコーディングを2回実施します。各ステップの詳細内容について、ご説明します:

    HTTP_METHOD

    GET, POST, DELETE, PUT は必ず大文字にしてください

    HTTP_REQUEST_URI

    https://api.fcoin.com/v2/ v2 APIのリクエストの接頭辞

    その後に、アクセスしたいリソースパスを記入してください。例: orders?param1=value1の場合は,最終形は https://api.fcoin.com/v2/orders?param1=value1となります

    リクエストされたURIのパラメータについては、アルファベット順に並べ替える必要があります!

    すなわち、リクエストされたURIはhttps://api.fcoin.com/v2/orders?c=value1&b=value2&a=value3の場合,デジタル署名する際に、リクエスト・パラメータをアルファベット順にソートさせ、デジタル署名の最終URIは https://api.fcoin.com/v2/orders?a=value3&b=value2&c=value1となります。 元のリクエスト中には、URI中の三つのパラメータの順番は c, b, aだが,ソート後、順番は a, b, cになっております。ご注意ください。

    TIMESTAMP

    APIを利用してアクセスする時のUNIX EPOCHタイムスタンプは、サーバーとの時間差は30秒以内でなければなりません。

    POST_BODY

    POST リクエストの場合は,POST リクエストデータへのデジタル署名も必要です。デジタル署名のルールはご説明します:

    リクエストされたすべてのキーはアルファベット順に並べ替えられた後、urlパラメータ化されます。 &を使用して、繋ぎます。

    下記リクエストデータの場合は:

    {
      "username": "username",
      "password": "passowrd"
    }
    

    先に、キーをアルファベット順にソートし、urlパラメータ化します。すなわち:

    password=password
    username=username
    

    アルファベットの順番には、pはuの前にあるため、passwordusernameの前に置かれるべき、その次、&を使用して接続します。すなわち:

    password=password&username=username
    

    デモンストレーション

    下記のリクエストの場合は:

    POST https://api.fcoin.com/v2/orders
    
    {
      "type": "limit",
      "side": "buy",
      "amount": "100.0",
      "price": "100.0",
      "symbol": "btcusdt"
    }
    
    timestamp: 1523069544359
    

    デジタル署名を行うため、あらかじめ下記データをご用意してください:

    POSThttps://api.fcoin.com/v2/orders1523069544359amount=100.0&price=100.0&side=buy&symbol=btcusdt&type=limit
    

    Base64エンコーディングし、下記データになります:

    UE9TVGh0dHBzOi8vYXBpLmZjb2luLmNvbS92Mi9vcmRlcnMxNTIzMDY5NTQ0MzU5YW1vdW50PTEwMC4wJnByaWNlPTEwMC4wJnNpZGU9YnV5JnN5bWJvbD1idGN1c2R0JnR5cGU9bGltaXQ=
    

    API キーを申請した際に取得したキー(API シークレット)をコピーし,以下のデジタル署名結果は、例として 3600d0a74aa3410fb3b1996cca2419c8 を使用しています,

    結果に対して、秘密鍵を使用して、 HMAC-SHA1 デジタル署名し、バイナリ結果に対してBase64 エンコーディング後、下記になります:

    DeP6oftldIrys06uq3B7Lkh3a0U=
    

    すなわち、APIサーバーへ検証するための最終的なデジタル署名が生成されます

    パラメータ名

    説明

    デベロッパーツール(準備中)を使用して、オンライン検証を行えます。

    公開API

    サーバー時刻の照会

    import fcoin
    
    api = fcoin.authorize('key', 'secret', timestamp)
    server_time = api.server_time()
    
    const fcoin = require('fcoin');
    
    let api = fcoin.authorize('key', 'secret', timestamp);
    let serverTime = api.serverTime();
    

    応答結果は下記のとおりです:

    {
      "status": 0,
      "data": 1523430502977
    }
    

    このAPIを使用して、サーバー時刻を取得できます。

    HTTP Request

    GET https://api.fcoin.com/v2/public/server-time

    取扱い仮想通貨の照会

    import fcoin
    
    api = fcoin.authorize('key', 'secret', timestamp)
    currencies = api.currencies()
    
    const fcoin = require('fcoin');
    
    let api = fcoin.authorize('key', 'secret', timestamp);
    let currencies = api.currencies();
    

    応答結果は下記のとおりです:

    {
      "status": 0,
      "data": [
        "btc",
        "eth"
      ]
    }
    

    このAPIを使用して、取扱い仮想通貨を取得できます。

    HTTP Request

    GET https://api.fcoin.com/v2/public/currencies

    取引通貨ペアの照会

    import fcoin
    
    api = fcoin.authorize('key', 'secret', timestamp)
    symbols = api.symbols()
    
    const fcoin = require('fcoin');
    
    let api = fcoin.authorize('key', 'secret', timestamp);
    let symbols = api.symbols();
    

    応答結果は下記のとおりです:

    {
      "status": 0,
      "data": [
        {
          "name": "btcusdt",
          "base_currency": "btc",
          "quote_currency": "usdt",
          "price_decimal": 2,
          "amount_decimal": 4
        },
        {
          "name": "ethusdt",
          "base_currency": "eth",
          "quote_currency": "usdt",
          "price_decimal": 2,
          "amount_decimal": 4
        }
      ]
    }
    

    このAPIを使用して、取引通貨ペアを取得できます。

    HTTP Request

    GET https://api.fcoin.com/v2/public/symbols

    マーケット情報

    マーケット情報概述

    マーケット情報は公開APIを通じて取得できます。現在、HTTPとWebSocketの2つのAPIを提供しています。 タイムリーにマーケット情報を取得するため、WebSocketを使用してアクセスすることをお勧めします。 マーケット情報のリアルタイムパフォーマンスを可能な限り高めるために、現在の公開している部分は最新のマーケットデータのみを取得することができます。もし全部の情報、または履歴情報を取得する必要がある場合は、support@fcoin.comまでご連絡ください

    すべてのHTTP リクエストのURLベースは:https://api.fcoin.com/v2/marketです

    すべてのWebSocket リクエストのURLは: wss://api.fcoin.com/v2/wsです

    用語は以下のように統一されます:

    WebSocket 初回接続の確立

    サーバーからウェルカムメッセージを送信します

    サーバーからのレスポンス

    {
      "type":"hello",
      "ts":1523693784042
    }
    

    WebSocket 接続の維持 - heartbeat

    WebSocket クライアント側はWebSocket サーバーとの接続を確立後、お勧めとして、WebSocket Client 30sごとに(この頻度は変化する可能性があります)、サーバーへping リクエストを送ります。サーバーがクライアントのping要求を長時間受信しなかった場合、サーバーはアクティブに切断します(300s)。

    WebSocket 请求

    import time
    import fcoin
    
    api = fcoin.authorize('key', 'secret', timestamp)
    now_ms = int(time.time())
    api.market.ping(now_ms)
    

    サーバーからのレスポンス

    {
      "type":"ping",
      "ts":1523693784042,
      "gap":112
    }
    

    プッシュサーバー時間の取得

    プッシュサーバーの時刻とデータ転送の時間差は、pingリクエスト時のサーバーから返されたtsとgapの値によって取得できます

    tickerデータの取得

    ticker情報ブロックを十分に小さく、迅速に取得するために、強制的にリスト表式を使用しています.

    ticker リスト表の該当フィールドの意味説明を示します:

    [
      "最新取引価格",
      "最新約定の出来高",
      "最高取引価格(買)",
      "最大出来高(買)",
      "最安取引価格(売)",
      "最小出来高(売)",
      "24時間前取引価格",
      "24時間内最高価格",
      "24時間内最安価格",
      "24時間内基準通貨出来高。例えば、btcusdtのbtcのボリューム",
      "24時間内評価通貨出来高。例えば、btcusdtのusdtのボリューム"
    ]
    

    HTTP リクエスト

    GET https://api.fcoin.com/v2/market/ticker/$symbol

    import fcoin
    
    api = fcoin.authorize('key', 'secret', timestamp)
    api.market.get_ticker("ethbtc")
    
    
    {
      "status": 0,
      "data": {
        "type": "ticker.btcusdt",
        "seq": 680035,
        "ticker": [
          7140.890000000000000000,
          1.000000000000000000,
          7131.330000000,
          233.524600000,
          7140.890000000,
          225.495049866,
          7140.890000000,
          7140.890000000,
          7140.890000000,
          1.000000000,
          7140.890000000000000000
        ]
      }
    }
    

    WebSocket サブスクリプション

    topic: ticker.$symbol

    import fcoin
    
    fcoin_ws = fcoin.init_ws()
    topics = ["ticker.ethbtc", "ticker.btcusdt"]
    fcoin_ws.handle(print)
    fcoin_ws.sub(topics)
    

    サブスクリプション成功した場合のレスポンスは次のとおりです:

    {
      "type": "topics",
      "topics": ["ticker.ethbtc", "ticker.btcusdt"]
    }
    

    通常のサブスクリプションの通知メッセージのフォーマットは次のとおりです:

    {
      "type": "ticker.btcusdt",
      "seq": 680035,
      "ticker": [
        7140.890000000000000000,
        1.000000000000000000,
        7131.330000000,
        233.524600000,
        7140.890000000,
        225.495049866,
        7140.890000000,
        7140.890000000,
        7140.890000000,
        1.000000000,
        7140.890000000000000000
      ]
    }
    

    詳細マーケット情報取得

    HTTP Request

    GET https://api.fcoin.com/v2/market/depth/$level/$symbol

    $level 下記種類を含みます:

    タイプ 説明
    L20 レベル20のマーケット情報.
    L150 レベル100のマーケット情報.
    full 全レベルのマーケット情報、送信時間と通知保証は.

    その中、 L20の通知時間は L150より若干早く、通知頻度は L100より若干多いです。実際の圧力と状況に基づきます。必要に応じて使用してください.

    WebSocket サブスクリプション

    サブスクリプション topic: depth.$level.$symbol

    import fcoin
    
    fcoin_ws = fcoin.init_ws()
    topics = ["depth.L20.ethbtc", "depth.L100.btcusdt"]
    fcoin_ws.handle(print)
    fcoin_ws.sub(topics)
    
    const fcoin = require('fcoin');
    
    let fcoin_ws = fcoin.init_ws()
    topics = ["depth.L20.ethbtc", "depth.L100.btcusdt"]
    fcoin_ws.handle(print)
    fcoin_ws.sub(topics)
    

    サブスクリプション成功した場合のレスポンスは次のとおりです:

    {
      "type": "topics",
      "topics": ["depth.L20.ethbtc", "depth.L100.btcusdt"]
    }
    

    通常の通知結果は下記のとおりです

    bidsとasksに対応する配列は、偶数でなければならず、1つの価格を購入(売却)し、1つの数量を購入(売却)し、順次後ろに並べる必要があります.

    {
      "type": "depth.L20.ethbtc",
      "ts": 1523619211000,
      "seq": 120,
      "bids": [0.000100000, 1.000000000, 0.000010000, 1.000000000],
      "asks": [1.000000000, 1.000000000]
    }
    

    最新の出来高明細の取得

    取引idのサイズを比較することによって、更新された取引かどうかを判断できます。{trade id} 通常、traceからtransactionまでのプロセスがあるため、公開”行情”の取引idは、決済システム中の取引idと実際には一致しないことにご留意いただきたい。 取引記録が1つであっても、最新の取引が再取得されたときに、IDが常に一致しているという保証はできません.

    PS: 過去のマーケット情報では、取引IDが1つであることが保証できます。{transaction id} ここは”行情”の更新通知としてのみ使用され、アーカイブに使用しないでください.

    HTTP Request

    GET https://api.fcoin.com/v2/market/trades/$symbol

    パラメータの照会(HTTP Query)

    パラメータ デフォルト値 説明
    before あるidの前のTradeの照会
    limit デフォルトは20条

    WebSocket 最新の取引データの照会

    topic: trade.$symbol limit: 最新の取引ボリューム args: [topic, limit]

    import fcoin
    
    fcoin_ws = fcoin.init_ws()
    topic = "trade.ethbtc"
    limit = 3
    args = [topic, limit]
    fcoin_ws.req(args, rep_handler)
    

    リクエスト成功した際のレスポンスは下記のとおりです:

    {"id":null,
     "ts":1523693400329,
     "data":[
       {
         "amount":1.000000000,
         "ts":1523419946174,
         "id":76000,
         "side":"sell",
         "price":4.000000000
       },
       {
         "amount":1.000000000,
         "ts":1523419114272,
         "id":74000,
         "side":"sell",
         "price":4.000000000
       },
       {
         "amount":1.000000000,
         "ts":1523415182356,
         "id":71000,
         "side":"sell",
         "price":3.000000000
       }
     ]
    }
    

    WebSocket サブスクリプション

    import fcoin
    
    fcoin_ws = fcoin.init_ws()
    topics = ["trade.ethbtc", "trade.btcusdt"]
    fcoin_ws.handle(print)
    fcoin_ws.sub(topics)
    

    订阅成功的响应结果如下:

    {
      "type": "topics",
      "topics": ["trade.ethbtc"]
    }
    

    通常の通知結果は下記のとおりです

    {
      "type":"trade.ethbtc",
      "id":76000,
      "amount":1.000000000,
      "ts":1523419946174,
      "side":"sell",
      "price":4.000000000
    }
    

    Candle情報の取得

    HTTP Request

    GET https://api.fcoin.com/v2/market/candles/$resolution/$symbol

    パラメータの照会(HTTP Query)

    パラメータ デフォルト値 説明
    before 查あるidより小さいidのCandle情報
    limit デフォルトは20条

    $resolution 含める種類

    タイプ 説明
    M1 1 分間
    M3 3 分間
    M5 5 分間
    M15 15 分間
    M30 30 分間
    H1 1 時間
    H4 4 時間
    H6 6 時間
    D1 1 日間
    W1 1 週間
    MN 1 ヶ月

    Weboskcet Candle情報のサブスクリプション

    topic: candle.$resolution.$symbol

    import fcoin
    
    fcoin_ws = fcoin.init_ws()
    topics = ["candle.M1.ethbtc", "depth.L20.ethbtc", "trade.ethbtc"]
    fcoin_ws.handle(print)
    fcoin_ws.sub(topics)
    

    サブスクリプション成功した場合のレスポンスは次のとおりです:

    {
      "type": "topics",
      "topics": ["candle.M1.ethbtc"]
    }
    

    通常のサブスクリプションの通知メッセージのフォーマットは次のとおりです:

    {
      "type":"candle.M1.ethbtc",
      "id":1523691480,
      "seq":11400000,
      "open":2.000000000,
      "close":2.000000000,
      "high":2.000000000,
      "low":2.000000000,
      "count":0,
      "base_vol":0,
      "quote_vol":0
    }
    

    アカウントと資金

    アカウント資金照会

    import fcoin
    
    api = fcoin.authorize('key', 'secret', timestamp)
    api.accounts_balance
    
    const fcoin = require('fcoin');
    
    let api = fcoin.authorize('key', 'secret', timestamp);
    let orders = api.accountsBalance;
    

    响应结果如下:

    {
      "status": 0,
      "data": [
        {
          "currency": "btc",
          "available": "50.0",
          "frozen": "50.0",
          "balance": "100.0"
        }
      ]
    }
    

    このAPIは、ユーザーの資産リストを照会するために使用されます。

    HTTP Request

    GET https://api.fcoin.com/v2/accounts/balance

    注文

    注文モデル説明

    注文モデルは、以下の属性によって構成されます:

    属性 タイプ 内容説明
    id String 注文 ID
    symbol String 通貨ペア
    side String 取引方向(buy, sell
    type String 注文タイプ(limitmarket
    price String 注文価格
    amount String 注文ボリューム
    state String 注文ステータス
    executed_value String 約定
    filled_amount String 出来高
    fill_fees String 手数料
    created_at Long 注文日時
    source String ソース

    注文ステータス説明:

    属性 内容説明
    submitted 注文中
    partial_filled 一部約定
    partial_canceled 一部キャンセル
    filled 約定
    canceled キャンセル
    pending_cancel キャンセルリクエスト中

    新規注文

    import fcoin
    
    api = fcoin.authorize('key', 'secret', timestamp)
    order_create_param = fcoin.order_create_param('btcusdt', 'buy', 'limit', '8000.0', '1.0')
    api.orders.create(order_create_param)
    
    const fcoin = require('fcoin');
    
    let api = fcoin.authorize('key', 'secret', timestamp);
    let orderCreateParam = fcoin.orderCreateParam('btcusdt', 'buy', 'limit', '8000.0', '1.0');
    let orders = api.orders.create(orderCreateParam);
    

    レスポンス結果は下記のとおりです:

    {
      "status": 0,
      "data": "9d17a03b852e48c0b3920c7412867623"
    }
    

    このAPIは新規注文を発注します。

    HTTP Request

    POST https://api.fcoin.com/v2/orders

    リクエスト・パラメータ

    パラメータ デフォルト値 説明
    symbol 通貨ペア
    side 取引方向
    type 注文タイプ
    price 価格
    amount 発注量

    注文リストの照会

    import fcoin
    
    api = fcoin.authorize('key', 'secret', timestamp)
    api.orders.get()
    
    const fcoin = require('fcoin');
    
    let api = fcoin.authorize('key', 'secret', timestamp);
    let orders = api.orders.get();
    

    レスポンス結果は下記のとおりです:

    {
      "status": 0,
      "data": [
        {
          "id": "string",
          "symbol": "string",
          "type": "limit",
          "side": "buy",
          "price": "string",
          "amount": "string",
          "state": "submitted",
          "executed_value": "string",
          "fill_fees": "string",
          "filled_amount": "string",
          "created_at": 0,
          "source": "web"
        }
      ]
    }
    

    このAPIは注文リストの照会に使用されます。

    HTTP Request

    GET https://api.fcoin.com/v2/orders

    照会パラメータ

    パラメータ デフォルト値 説明
    symbol 通貨ペア
    states 注文ステータス
    before あるページの前の
    after あるページの後の注文の照会
    limit ページごとの注文量、デフォルトは20条

    特定注文の取得

    import fcoin
    
    api = fcoin.authorize('key', 'secret', timestamp)
    api.orders.get('9d17a03b852e48c0b3920c7412867623')
    
    const fcoin = require('fcoin');
    
    let api = fcoin.authorize('key', 'secret', timestamp);
    let max = api.orders.get('9d17a03b852e48c0b3920c7412867623');
    

    レスポンス結果は下記のとおりです:

    {
      "status": 0,
      "data": {
        "id": "9d17a03b852e48c0b3920c7412867623",
        "symbol": "string",
        "type": "limit",
        "side": "buy",
        "price": "string",
        "amount": "string",
        "state": "submitted",
        "executed_value": "string",
        "fill_fees": "string",
        "filled_amount": "string",
        "created_at": 0,
        "source": "web"
      }
    }
    

    このAPIは指定された注文の詳細を取得します。

    HTTP Request

    GET https://api.fcoin.com/v2/orders/{order_id}

    URL パラメータ

    パラメータ 説明
    order_id 注文 ID

    注文キャンセルのリクエスト

    import fcoin
    
    api = fcoin.authorize('key', 'secret', timestamp)
    api.orders.submit_cancel(2)
    
    const fcoin = require('fcoin');
    
    let api = fcoin.authorize('key', 'secret', timestamp);
    let max = api.orders.submitCancel(2);
    

    レスポンス結果は下記のとおりです:

    {
      "status": 0,
      "msg": "string",
      "data": true
    }
    

    このAPIは指定された注文をキャンセルするために、使用されます。注文のキャンセル・プロセスは非同期です。つまり、このAPIの呼び出しが成功した場合は、注文はキャンセルリクエストのプロセスに入っていますが、注文の取り消しを確認するためにマッチング処理を待つ必要があります。

    HTTP Request

    POST https://api.fcoin.com/v2/orders/{order_id}/submit-cancel

    URL パラメータ

    パラメータ 解釈
    order_id 注文 ID

    指定されている注文の取引記録の照会

    import fcoin
    
    api = fcoin.authorize('key', 'secret', timestamp)
    api.orders.get('9d17a03b852e48c0b3920c7412867623').match_results()
    
    const fcoin = require('fcoin');
    
    let api = fcoin.authorize('key', 'secret', timestamp);
    let max = api.orders.get('9d17a03b852e48c0b3920c7412867623').matchResults();
    

    レスポンス結果は下記のとおりです:

    {
      "status": 0,
      "data": [
        {
          "price": "string",
          "fill_fees": "string",
          "filled_amount": "string",
          "side": "buy",
          "type": "limit",
          "created_at": 0
        }
      ]
    }
    

    このAPIは指定されている注文の取引記録の取得に使用されます

    HTTP Request

    GET https://api.fcoin.com/v2/orders/{order_id}/match-results

    URL パラメータ

    パラメータ 解釈
    order_id 注文 ID

    注文エラーコード

    エラーコード 内容解釈
    2000 アカウントエラー

    エラーコード

    エラーコード 内容解釈
    400 Bad Request -- 誤リクエスト
    401 Unauthorized -- API key 或いは署名、タイムスタンプに誤りがあります
    403 Forbidden -- アクセス不可
    404 Not Found -- リクエストされたリソースが見つかりませんでした
    405 Method Not Allowed -- 使用されるHTTPメソッドは、要求されたリソースには適用されません
    406 Not Acceptable -- リクエストされたコンテンツのフォーマットはJSONではありません
    429 Too Many Requests -- 負荷がオーバーロード、リクエスト頻度を下げてください
    500 Internal Server Error -- サービスの内部エラーが発生、後でもう一度お試しください
    503 Service Unavailable -- サービスが利用できません、後でやり直してください