NAV Navbar
python javascript
  • 紹介
  • 認証
  • 公開インターフェース
  • マーケット情報
  • アカウント
  • 注文
  • ポジション
  • wsプッシュインターフェース
  • 取引ボット
  • 紹介

    以下の情報を理解することにより、FMexが提供するAPIを使用してFMex取引プラットフォームに簡単にアクセスできます。

    実際取引APIドメイン名:api.fmex.com

    テストネットAPIドメイン名:api.testnet.fmex.com

    APIアクセスアドレス:https://api.fmex.com/ 。また、httpsアクセスのみをサポートし、httpアクセスはサポートしていないので、ご注意ください。

    APIリクエスト:GETまたはPOSTリクエストのみがサポートされています。

    GETリクエストの場合、すべてのリクエスト・パラメータはqueryStringで送信してください。たとえば:/v1/contracts/orders/open?symbol=BTCUSD_P

    POSTリクエストの場合、すべてのリクエスト・パラメータはRequest BodyとしてJSONで送信されます。 リクエストタイプはContent-Type: application/json でなければなりません。

    認証

    FMex は FCoin testnet のAPIキーとAPIシークレットを使用して、認証を行います。 設定センターにアクセスし、APIキーとAPIシークレットを取得できます。

    FMex は 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.testnet.fmex.com/ はAPIリクエストの接頭辞です。

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

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

    すなわち、リクエストされたURIはhttps://api.testnet.fmex.com/orders?c=value1&b=value2&a=value3の場合,デジタル署名する際に、リクエスト・パラメータをアルファベット順にソートさせ、デジタル署名の最終URIはhttps://XXX/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
    

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

    password=password&username=username
    

    デモンストレーション

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

    POST https://api.testnet.fmex.com/orders
    
    {
      "symbol":"btcusd_p",
      "type":"limit",
      "direction":"short",
      "source":"web",
      "price":5500,
      "quantity":100
    }
    
    timestamp: 1523069544359
    

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

    POSThttps://api.testnet.fmex.com/v3/contracts/orders1571109222426direction=short&price=5500&quantity=100&source=WEB&symbol=btcusd_p&type=limit
    

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

    UE9TVGh0dHBzOi8vYXBpLnRlc3RuZXQuZm1leC5jb20vdjMvY29udHJhY3RzL29yZGVyczE1NzExMDkyMjI0MjZkaXJlY3Rpb249c2hvcnQmcHJpY2U9NTUwMCZxdWFudGl0eT0xMDAmc291cmNlPVdFQiZzeW1ib2w9YnRjdXNkX3AmdHlwZT1saW1pdA==
    

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

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

    g6vFomL3T3pOhCugUNo/UcaLxTw=
    

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

    パラメータの名称

    説明

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

    公開インターフェース

    取引通貨ペアの照会

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

    HTTP リクエスト

    GET /v2/public/contracts/symbols

    サーバー時刻の照会

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

    HTTP リクエスト

    GET /v2/public/server-time

    取扱い仮想通貨の照会

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

    HTTP リクエスト

    GET /v2/public/contracts/currencies

    インデックスリストの取得

    このAPIを使用して、インデックスリストを取得できます。

    HTTP リクエスト

    GET /v2/public/indexes/symbols

    マーケット情報

    マーケット情報概説

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

    全てのHTTPリクエストのURLベースは: https://api.fmex.com/です。

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

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

    WebSocket 初回接続の確立

    接続に成功すると、サーバーからウェルカムメッセージが送信されます。

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

    {
      "type":"hello",
      "ts":1523693784042
    }
    
    • ts: サーバーの現在時間をプッシュします。

    WebSocket 接続の維持 - heartbeat

    # WebSocket サーバー ping に送信し、ハートビートを維持する
    import time
    import fcoin
    
    api = fcoin.authorize('key', 'secret', timestamp)
    now_ms = int(time.time())
    api.market.ping(now_ms)
    

    WebSocketクライアント側はWebSocketサーバーとの接続を確立した後、お勧めとして、WebSocket Client 15sごとに(すすめは10~20s) サーバーへpingリクエストを送ります。サーバーがクライアントのping要求を長時間受信しなかった場合、サーバーはアクティブに切断します。

    WebSocket リクエスト

    ping コマンドを送信します: {"cmd":"ping","args":[$client_ts],"id":"$client_id"}

    ping コマンドリクエストのデモンストレーション:

    {"cmd":"ping","args":[1540557696867],"id":"sample.client.id"}
    

    ping コマンドが成功したら、サーバーからのレスポンス:

    {
      "id":"sample.client.id",
      "type":"ping",
      "ts":1523693784042,
      "gap":112
    }
    
    • gap: サーバーがこのステートメントを処理してからクライアントが送信するまでの時間差
    • ts: サーバーの現在時刻

    WebSocket サブスクリプション

    sub コマンドを送信する: {"cmd":"sub","args":["$topic", ...],"id":"$client_id"}

    sub コマンドリクエストのデモンストレーション(単数のtopicの場合):

    {"cmd":"sub","args":["ticker.ethbtc"]}
    

    sub コマンドリクエストのデモンストレーション(複数のtopicの場合):

    {"cmd":"sub","args":["ticker.ethbtc", "ticker.btcusdt"]}
    

    サブスクリプションが成功したレスポンス:

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

    サブスクリプションが失敗したレスポンス:

    {
      "id":"invalid_topics_sample",
      "status":41002,
      "msg":"invalid sub topic, xxx.M1.xxx"
    }
    

    ticker データの取得

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

    ticker リストの該当フィールドへの説明:

    [
      "最新成約価格",
      "最新の取引出来高",
      "最高の買い注文の価格",
      "最高の買い注文の出来高",
      "最安の売り注文の価格",
      "最安の売り注文の出来高",
      "24時間前の成約価格",
      "24時間内最高の価格",
      "24小时内最安の価格",
      "24時間内の基準通貨出来高、例えば、btcusdt の btc の出来高",
      "24時間内の評価通貨の出来高、例えば、btcusdt の usdt の出来高"
    ]
    

    HTTP リクエスト

    GET /v2/market/ticker/$symbol

    HTTP リクエストへのレスポンス:

    {
      "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 サブスクリプション

    sub コマンドを送信する,topic: ticker.$symbol ( WebSocket サブスクリプションを参考する)

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

    {
      "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 リクエスト

    GET /v2/market/depth/$level/$symbol

    $level 下記種類を含みます(大文字と小文字を区別):

    タイプ 説明
    L20 レベル20のマーケット情報
    L150 レベル150のマーケット情報

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

    HTTP リクエストのレスポンス:

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

    WebSocket サブスクリプション

    sub コマンドを送信する,topic: depth.$level.$symbol ( WebSocket サブスクリプションを参照してください)

    WebSocket サブスクリプションからのレスポンス:

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

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

    最新取引詳細の取得

    取引idのサイズを比較することによって、更新された取引かどうかを判断できます。{trade id} に気をつけてください。普通では、traceからtransactionまでのプロセスがあるため、公開マーケット情報での取引idは、決済システム中の取引idとは必ず一致するわけではありません。ご留意いただきたい。取引記録が1つであっても、最新の取引が再取得されたときに、IDが常に一致しているという保証はできません。

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

    HTTP リクエスト

    GET /v2/market/trades/$symbol

    パラメータの照会(HTTP リクエスト)の照会

    パラメータ デフォルト値 説明
    before あるIDの前のTradeを照会します
    limit デフォルトは20です

    WebSocket リクエスト

    req コマンドを送信する: {"cmd":"req", "args":["$topic", limit],"id":"$client_id"}

    WebSocket リクエストが成功したレスポンスは次のとおりです:

    {
      "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 サブスクリプション

    sub コマンドを送信する,topic: trade.$symbol ( WebSocket サブスクリプションを参照してください)

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

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

    Candle 情報の取得

    HTTP リクエスト

    GET /v2/market/candles/$resolution/$symbol

    パラメータ(HTTP リクエスト)の照会

    パラメータ デフォルト値 説明
    before ある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 ヶ月

    WebSocket リクエスト

    req コマンドを送信する: {"cmd":"req","args":["$topic",limit,before],"id":"$client_id"}

    WebSocket リクエストが成功したレスポンスは次のとおりです:

    {
      "id":"candle.M15.btcusdt",
      "data":[
        {
          "id":1540809840,
          "seq":24793830600000,
          "high":6491.74,
          "low":6489.24,
          "open":6491.24,
          "close":6490.07,
          "count":26,
          "base_vol":8.2221,
          "quote_vol":53371.531286
        },
        {
          "id":1540809900,
          "seq":24793879800000,
          "high":6490.47,
          "low":6487.62,
          "open":6490.09,
          "close":6487.62,
          "count":23,
          "base_vol":10.8527,
          "quote_vol":70430.840624
        }
      ]
    }
    

    WebSokcet サブスクリプション

    sub コマンドを送信する,topic: candle.$resbolution.$symbol ( WebSocket サブスクリプションを参照してください)

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

    {
      "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
    }
    

    現在のシステムインデックスの照会

    HTTP リクエスト

    GET /v2/market/indexes

    あるインデックスの最新の履歴値を照会する

    HTTP リクエスト

    GET /v2/market/indexes/$indexname

    為替レートの照会

    HTTP リクエスト

    GET /v2/market/fex

    アカウント

    現在アカウントの残高を照会する

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

    HTTP リクエスト

    APIパス:GET /v3/contracts/accounts

    APIリクエスト・パラメータ:無し

    APIレスポンス:

    {
      "status":0,
      "data":
            {通貨: [利用可能な残高, 注文に利用した金額, ポジションの証拠金金額]
              "BTC":[2.796888254907565438,0E-18,0E-18]
              }
            }
    }
    

    証拠金をウォレットに振替する

    HTTP リクエスト

    APIパス:POST /v3/contracts/transfer/out/request

    リクエスト・パラメータ

    フィールド名称 必要性 内容説明
    currency Y 通貨名称、例えば「BTC」
    transfer_from Y 送金側、「contracts」にしなければなりません。
    transfer_to Y 送金先、「wallet」にしなければなりません。
    amount Y 送金金額、例えば:1.024

    デモンストレーション:

    {
        "currency":"BTC",
        "transfer_from":"CONTRACTS",
        "transfer_to":"WALLET",
        "amount":1,
    }
    

    APIレスポンス:

    {
      "status": 0,
      "data": {
        "transfer_from": "contracts",
        "transfer_to": "wallet",
        "amount": 0.1,
        "transfer_id": "179363219767363",
        "currency": "BTC"
      }
    }
    
    
    

    現在、1つの振替動作(コントラクト->ウォレット)の実行状態を照会する

    APIパス:GET /v3/contracts/transfer/out/{transferId}/status

    APIリクエスト・パラメータ:無し

    APIレスポンス:

    {
      'status': 0,
      'data': {
        'transfer_id': '179364285120578',
        'transfer_from': 'contracts',
        'transfer_to': 'wallet',
        'amount': 0.1,
        'done': True,
        'created_at': 1567682689265,
        'updated_at': 1567682689473,
        'error': False,
        'currency': 'BTC'
      }
    }
    

    振替履歴の照会

    APIパス:GET /v3/contracts/transfer/logs

    APIリクエスト・パラメータ:無し

    APIレスポンス:

    {
      'status': 0,
      'data': {
        'hasMore': False,
        'nextOffsetId': 0,
        'results': [
          {
            'transfer_id': '167600369696833',
            'transfer_from': 'CONTRACTS',
            'transfer_to': 'WALLET',
            'amount': 0.01,
            'done': True,
            'created_at': 1566280321419,
            'updated_at': 1566280321851,
            'error': False,
            'currency': 'BTC'
          }
        ]
      }
    }
    

    注文

    注文モデルに関する説明

    注文モデルは、次の属性で構成されています:

    属性 タイプ 意味
    id long 注文ID
    sequence_id long シーケンスID
    margin_currency_id long 証拠金Currency ID
    direction enum ポジションの方向LONG/SHORT
    type enum 注文タイプLIMIT/MARKET
    status enum 注文状態に関する説明をご参照ください
    features long 注文特性、各bitはぞれぞれの特性を表す:0x01=FOK、0x02=post_only、0x04=Hidden、0x08=IOC、0x8000=清算注文
    price decimal 指値注文価格(成行注文の場合、市場価格の上限または下限を示す。)
    quantity long 注文数量
    fill_price decimal 成約の平均価格
    unfilled_quantity long 未成約の数量
    maker_fee_rate decimal Makerの手数料レート
    taker_fee_rate decimal Takerの手数料レート
    fee decimal この注文で徴収された手数料
    trigger_on decimal Stop注文のトリガー価格です。Stop以外の注文のトリガー価格は常に0です。
    trailing_base_price decimal TrailingStop注文の基準価格です。このタイプ以外の注文は常に0です。
    trailing_distance decimal TrailingStop注文のトリガー価格との距離です。このタイプ以外の注文は常に0です。
    created_at long 注文作成のタイムスタンプ
    updated_at long 注文更新のタイムスタンプ

    注文状態に関する説明:

    属性 説明
    PENDING 成約待ち
    PARTIAL_FILLED 部分成約
    FULLY_FILLED 全部成約
    PARTIAL_CANCELLED 部分キャンセル
    FULLY_CANCELLED 全部キャンセル
    STOP_PENDING stop注文はトリガーを待っています
    STOP_FAILED stop注文はトリガーされたが、実行が失敗しました(例:証拠金凍結が失敗になりました)
    STOP_CANCELLED stop注文はトリガーされないため、キャンセルされました

    新規注文

    このAPIを使用して、新規注文を出すことができます。

    HTTP Request

    POST /v3/contracts/orders

    リクエスト・パラメータ

    パラメータ 必須かどうか 説明
    symbol Y 契約コード、例えば"BTCUSD_P"
    type Y 注文タイプ、OrderTypeをご参照ください
    direction Y 注文方向、Directionをご参照ください
    source "" 注文ソースマーク、例えば"WEB"、"APP"、文字と数字の組み合わせ
    price 指値注文のみ 指値注文価格、小数点以下1桁のみサポートする
    quantity Y 注文数量、整数であり、最小値は1である
    trigger_on N 利食いと損切り注文のトリガー価格
    trigger_direction N 利食いと損切り注文のトリガー条件、"long"、"short"
    trailing_distance N トレーリング損切り注文のトリガー価格までの距離
    fill_or_kill N タイプはstringであり、FOK注文を設定するかどうか
    immediate_or_cancel N タイプはstringであり、IOC注文を設定するかどうか
    post_only N タイプはstringであり、post_only注文を設定するかどうか
    hidden N タイプはstringであり、Hidden注文を設定するかどうか
    reduce_only N タイプはstringであり、reduce_only注文を設定するかどうか

    ご注意:

    注文タイプが「LIMIT」の場合、priceを入力する必要があります。

    trigger_onとtrailing_distanceを同時に入力することができません。

    fill_or_kill=trueの場合、immediate_or_cancel、post_only、hidden及びreduce_onlyを設定することができません。

    immediate_or_cancel=trueの場合、fill_or_kill、post_only、hidden及びreduce_onlyを設定することができません。

    post_only=trueの場合、fill_or_kill、immediate_or_cancel及びreduce_onlyを設定することができません。

    hidden=trueの場合、fill_or_killとimmediate_or_cancelを設定することができません。

    MARKET注文とIOC注文のみ、reduce_only=trueを設定できます。

    例を挙げて、普通の利食いと損切り注文の場合:

    {

    type: "MARKET",

    quantity: 10,

    trigger_on: 8000,

    trigger_direction: "LONG",

    direction: "LONG",

    ... }

    この例の中で、価格が8000及びそれ以上になる場合、10USDT相当する成行ロングの契約はマーケットに出されます。trigger_directionがshortであり、つまり、価格が8000以下である場合、10USDT相当する成行ショートの契約はマーケットに出されます。

    trailing stopの場合:

    {

    type: "MARKET",

    quantity: 10,

    trailing_distance: 100,

    trigger_direction: "SHORT",

    direction: "SHORT",

    ... }

    ユーザーがこのタイプの注文を出すと、10USDT相当する成行ロングの注文は最新価格がtrailing_distanceより100USDT以上下がる場合、出されます。

    ただし、最新価格が上がる場合、この注文はこの価格に追いつけ、さらに、最新価格が最高価格になり、trailing_distanceより100USDT以上下がる場合、執行されます。

    trigger_direction及びdirectionが同時にlongである場合、つまり:ユーザーがこのタイプの注文を出すと、10USDT相当する成行ロングの注文は、最新価格がtrailing_distanceより100USDT以上上がる場合、出されます。

    APIレスポンス:

    {
      "status": 0,
      "data": {
        "id": 167624805711936,  #APIによって計算された分散型のID
        "sequenceId": 260087,  #sequenceによって計算されたsequenceId
        "type": "LIMIT",  #注文タイプ LIMIT/MARKET
        "status": "PENDING",  #注文状態
        "direction": "SHORT", #注文方向LONG/SHORT
        "features": 0,        #注文特性、bitにより組み合わせ:FOK/IOC/HIDDEN/post_only
        "price": 100.0,     #指値価格、LIMIT注文に限定されています
        "quantity": 200,    #数量
        "unfilled_quantity": 200, #未成約数量
        "maker_fee_rate": -0.00025,#maker取引手数料レート
        "taker_fee_rate": 0.001,   #taker取引手数料レート
        "fee": 0,                #注文で徴収されたfee
        "trigger_direction": "LONG",#トリガーの方向
        "trigger_on": 0,
        "trailing_base_price": 0,#トリガーの基準価格
        "trailing_distance": 0,#トリガー価格までの距離
        "created_at": 1566283234499, #注文作成のタイムスタンプ
        "updated_at": 1566283234499, #注文更新のタイムスタンプ
        "frozen_margin": 0.034188034188034184,#凍結されたmargin
        "frozen_quantity": 20000,#凍結数量
        "hidden": false #Hidden注文にするかどうか
      }
    }
    

    注文のキャンセル

    このAPIを使用して、注文をキャンセルできます。

    HTTP Request

    POST /v3/contracts/orders/<order_id>/cancel

    说明: order_idは注文のidです。

    リクエスト・パラメータ

    無し

    APIレスポンス:

    {
      "status": 0,
      "data": {
        "id": 167624805711936,  #APIによって計算された分散型のID
        "sequenceId": 260087,  #sequenceによって計算されたsequenceId
        "type": "LIMIT",  #注文タイプLIMIT/MARKET
        "status": "PENDING",  #注文状態
        "direction": "SHORT", #注文方向LONG/SHORT
        "features": 0,        #注文属性、bitにより組み合わせ:FOK/IOC/HIDDEN/post_only
        "price": 100.0,     #指値価格、LIMIT注文だけ
        "quantity": 200,    #数量
        "unfilled_quantity": 200, #未成約数量
        "maker_fee_rate": -0.00025,#maker手数料レート
        "taker_fee_rate": 0.001,   #taker手数料レート
        "fee": 0,                #注文で徴収されたfee
        "trigger_direction": "LONG",#トリガーの方向
        "trigger_on": 0,
        "trailing_base_price": 0,#トリガーの基準価格
        "trailing_distance": 0,#トリガー価格までの距離
        "created_at": 1566283234499, #注文作成のタイムスタンプ
        "updated_at": 1566283234499, #注文更新のタイムスタンプ
        "frozen_margin": 0.034188034188034184,#凍結されたmargin
        "frozen_quantity": 20000,#凍結数量
        "hidden": false #Hidden注文にするかどうか
      }
    }
    

    Activity Ordersの照会

    このAPIを使用して、Activity Ordersを照会できます。

    HTTP Request

    GET /v3/contracts/orders/open

    リクエスト・パラメータ

    無し

    APIレスポンス:

    {
      'status': 0,
      'data': {
        'results': [
          {
            'id': 167560221818945,
            'sequenceId': 259092,
            'type': 'LIMIT',
            'status': 'PENDING',
            'direction': 'SHORT',
            'features': 0,
            'price': 15677.0,
            'quantity': 265,
            'unfilled_quantity': 265,
            'maker_fee_rate': -0.00025,
            'taker_fee_rate': 0.001,
            'fee': 0,
            'trigger_direction': 'LONG',
            'trigger_on': 0,
            'trailing_base_price': 0,
            'trailing_distance': 0,
            'created_at': 1566275535810,
            'updated_at': 1566275535810,
            'frozen_margin': 0.000169037443388403,
            'frozen_quantity': 265,
            'hidden': False
          }
        ]
      }
    }
    

    Activity Ordersの詳細の照会

    このAPIを使用し、Activity Ordersの詳細を照会できます。

    HTTP リクエスト

    GET /v3/contracts/orders/open/<order_id>

    説明: order_idは注文idです。

    パリクエスト・パラメータ

    無し

    APIレスポンス:

    {
      'status': 0,
      'data': {
            'id': 167560221818945,
            'sequenceId': 259092,
            'type': 'LIMIT',
            'status': 'PENDING',
            'direction': 'SHORT',
            'features': 0,
            'price': 15677.0,
            'quantity': 265,
            'unfilled_quantity': 265,
            'maker_fee_rate': -0.00025,
            'taker_fee_rate': 0.001,
            'fee': 0,
            'trigger_direction': 'LONG',
            'trigger_on': 0,
            'trailing_base_price': 0,
            'trailing_distance': 0,
            'created_at': 1566275535810,
            'updated_at': 1566275535810,
            'frozen_margin': 0.000169037443388403,
            'frozen_quantity': 265,
            'hidden': False
      }
    }
    

    注文IDで注文の詳細を取得する

    このAPIを使用し、すべての注文の詳細を照会できます

    HTTP リクエスト

    GET /v3/contracts/orders/<order_id>

    説明: order_idは注文idです。

    リクエスト・パラメータ

    無し

    APIレスポンス:

    {
      'status': 0,
      'data': {
            'id': 167560221818945,
            'sequenceId': 259092,
            'type': 'LIMIT',
            'status': 'PENDING',
            'direction': 'SHORT',
            'features': 0,
            ‘fill_price':0   #成約の平均価格
            'price': 15677.0, #注文価格 
            'quantity': 265,
            'unfilled_quantity': 265,
            'maker_fee_rate': -0.00025,
            'taker_fee_rate': 0.001,
            'fee': 0,
            'trigger_direction': 'LONG',
            'trigger_on': 0,
            'trailing_base_price': 0,
            'trailing_distance': 0,
            'created_at': 1566275535810,
            'updated_at': 1566275535810,
            'frozen_margin': 0.000169037443388403,
            'frozen_quantity': 265,
            'hidden': False
      }
    }
    

    注文履歴の照会

    このAPIを使用し、注文履歴を照会できます。

    HTTP リクエスト

    GET /v3/contracts/orders/closed

    リクエスト・パラメータ

    パラメータ 必須かどうか 説明
    range N 月を照会する。形式はYYYYMMです。例、「201907」。デフォルトは空で、現在の月を示します。
    symbol N 照会条件のフィルタリングに使用され、指定されたsymbolの注文のみをフィルタリングします。デフォルトは空で、すべてのsymbolを示します。
    offsetId N 現在のページの開始idを入力します。デフォルトは0で、最初のページを示します。
    limit N 1〜100の範囲で結果集合内の履歴の最大値を返信します。デフォルトは100です。

    APIレスポンス:

    {
      'status': 0,
      'data': {
        'range': '201908',
        'hasMore': True,
        'nextOffsetId': 163466438508609,
        'results': [
          {
            'id': 163466455285825,
            'sequenceId': 79260,
            'type': 'LIMIT',
            'status': 'FULLY_FILLED',
            'direction': 'SHORT',
            'features': 0,
            'price': 5286.0,
            'quantity': 332,
            'unfilled_quantity': 0,
            'maker_fee_rate': -0.00025,
            'taker_fee_rate': 0.001,
            'fee': -1.570185395384e-05,
            'trigger_direction': 'LONG',
            'trigger_on': 0.0,
            'trailing_base_price': 0.0,
            'trailing_distance': 0.0,
            'created_at': 1565787520849,
            'updated_at': 1565787520849
          },
          {...}
        ]
      }
    }
    

    成約注文履歴の照会

    このAPIを使用して、成約注文の履歴を照会できます。

    HTTP リクエスト

    GET /v3/contracts/orders/<order_id>/matches

    説明: order_idは注文idです。

    リクエスト・パラメータ

    無し

    APIレスポンス:

    {
      'status': 0,
      'data': {
        'results': [
          {
            'taker': False,
            'price': 13403.0,
            'quantity': 994.0,
            'fee': -1.8540625233156e-05,
            'created_at': 1566275534853
          }
        ]
      }
    }
    

    ポジション

    ポジションのリストの照会

    このAPIを使用して、ポジションのリストを取得できます。

    HTTP リクエスト

    GET /v3/broker/auth/contracts/positions

    リクエスト・パラメータ

    無し

    APIレスポンス:

    {
      'status': 'ok',
      'data': {
        'results': [
          {
            'direction': 'SHORT',  #ポジションの方向
            'updated_at': 1566271860000,  #最後にポジションの変更タイムスタンプ(ミリ秒レベル)
            'quantity': 0,  #保有している契約の数量です。プラスでなければなりません。0の場合は、すべてのポジションが清算されたことを示します。
            'leverage': 0, #ポジションで設定されたレバレッジ比率です。それは、実際のレバレッジ比率と必ずしも同じではありません。
            'riskLevel': 0, #リスクレベル
            'max_quantity': 100000, #保有可能な契約数量の最大限
            'realized_pnl': -0.036307524734501204, #実現損益。実現損益は統計データとしてユーザーに提示され、ポジションが構築されてからの損益を示します。
            'taker_fee_rate': 0.001, #ポジションを構築したときに決定されたポジション解消用のtaker手数料レート
            'margin': 0.0, #ポジションの証拠金です。プラスでなければなりません。
            'bankruptcy_price': 0.0, #破産価格。この価格でポジションを解消し、takerとしての手数料を差し引いた後、その権益は0です。
            'liquidation_price': 0.0, #清算価格、この価格でポジションを解消し、takerとしての手数料を差し引いた後、残りの権益は「ポジションと維持証拠金の積」です。
            'entry_price': 11017.0, #ポジション構築の平均価格。ポジション構築の平均価格は、ポジションが増減するたびに調整されます。
            'symbol': 'BTCUSD_P', #ポジションの契約コード、たとえば、BTCUSD_P。
            'closed': True, #ポジションが解消されるかどうか
            'minimum_maintenance_margin_rate': 0.005 #維持証拠金の最小限。ポジション証拠金が維持証拠金の最小限になると、即時に清算されます。
          }
        ]
      }
    }
    

    ポジションレバレッジの設定

    HTTP リクエスト

    POST /v3/contracts/positions/$symbol/leverage

    symbol:URLパラメータ、ポジションのSymbol名

    無し

    パラメータ 必須かどうか 説明
    leverage 必須 0~最大許容値、0=クロース、1~最大許容値=分離でレバレッジの倍数

    リクエストのデモンストレーション

    { 'leverage': 0 }

    APIレスポンス:

    {
      'status': 0,
      'data': {
        'leverage': 0
      }
    }
    

    ポジション証拠金の設定

    HTTP リクエスト

    POST /v3/contracts/positions/$symbol/margin

    symbol:URLパラメータ、ポジションのSymbol名称

    リクエスト・パラメータ

    パラメータ 必要かどうか 説明
    margin 必要 改めてポジション証拠金を設定する

    リクエストのデモンストレーション

    { 'margin': 0 }

    APIレスポンス:

    {
      'status': 0,
      'data': {
        'margin': 0
      }
    }
    

    ポジションのリスクレベルの設定

    HTTP リクエスト

    POST /v3/contracts/positions/$symbol/riskLevel

    symbol:URLパラメータ、ポジションのSymbol名称

    リクエスト・パラメータ

    パラメータ 必要かどうか 説明
    risk_level 必要  0~最大許容値

    リクエストのデモンストレーション

    { 'risk_level': 0 }

    APIレスポンス:

    {
      'status': 0,
      'data': {
        'risk_level': 0
      }
    }
    

    wsプッシュインターフェース

    署名方式:
    1.httpアドレスのみに署名する
    例えば、この文字列のみに署名します:GEThttps://api.fmex.com/v2/user/ws1579154149629、署名結果を取得できます。署名方法はhttpリクエストとは同じです。
    2.署名結果はwsを介してサーバーに転送します。
    例:wss://api.fmex.com/v2/user/ws?FC-ACCESS-KEY=f8wersd4sdfc7121cbdd81986&FC-ACCESS-TIMESTAMP=1579147466690&FC-ACCESS-SIGNATURE=aKx/DMQ6j75JwegtfDVuJaXRxoxA=
    3.接続が成功すると、wsを介してコマンドを送信し、対応する情報を取得できます。

    その中、http地址:https://api.fmex.com/v2/user/ws
    wsアドレス:wss://api.fmex.com/v2/user/ws

    補足説明:このインターフェイスはインクリメントプッシュです。つまり、サブスクリプションが成功すると、変更があった場合のみ情報がユーザーにプッシュされます。

    アカウント情報の取得

    websocketにリクエストされる情報は:

    sub コマンドを送信する、topic: account ( WebSocket サブスクリプションを参考してください)

    {
        "id":"11111",
        "cmd":"sub",
        "args":["account"],
    }
    

    WebSocket リクエストが成功したレスポンスは次のとおりです:

    
    {
        "type": "account", 
        "account": 
        {
            "currency": "BTC", 
            "available": 1.34242880408925, 
            "frozen": 0.0, 
            "position": 9.747280117178e-06, 
            "updated_at": 1580802053643
        }, 
        "ts": 1580802053662  # 更新時間
    }
    

    注文の取得

    websocketにリクエストされる情報は:

    sub コマンドを送信する、topic: order.$symbol ( WebSocket サブスクリプションを参考してください)

    {
        "id":"11111",
        "cmd":"sub",
        "args":["order.btcusd_p"],
    }
    

    WebSocket リクエストが成功したレスポンスは次のとおりです:

    {
        "type": "order.btcusd_p", 
        "order": 
        {
            "id": 849758102002, 
            "quantity": 1, 
            "direction": "LONG", 
            "features": 8, 
            "price": 10210, 
            "fill_price": 9288.0, 
            "unfilled_quantity": 0, 
            "symbol": "BTCUSD_P", 
            "margin_currency": "BTC", 
            "fee": 4.8449612403e-08, 
            "type": "MARKET", 
            "status": "FULLY_FILLED", 
            "trigger_direction": "LONG", 
            "trigger_on": 0, 
            "trailing_base_price": 0, 
            "trailing_distance": 0, 
            "created_at": 1580802204215
            }, 
        "ts": 1580802204232
    }
    

    ポジションの取得

    websocketにリクエストされる情報は:

    sub コマンドを送信する、topic: position.$symbol ( WebSocket サブスクリプションを参考してください)

    {
        "id":"11111",
        "cmd":"sub",
        "args":["position.btcusd_p"],
    }
    

    WebSocket リクエストが成功したレスポンスは次のとおりです:

    {
        "type": "position.btcusd_p", 
        "position": 
        {
             "symbol": "BTCUSD_P", 
             "quantity": 1, 
             "direction": "LONG", 
             "leverage": 50, 
             "risk_level": 0, 
             "margin": 9.749658727683e-06,
              "taker_fee_rate": 0.00045, 
              "realized_pnl": -4.8499218623e-08, 
              "entry_price": 9278.5, 
              "liquidation_price": 9363.483892761602, 
              "bankruptcy_price": 8512.606170669584, 
              "minimum_maintenance_margin_rate": 0.1, 
              "updated_at": 1580802507384
        },
         "ts": 1580802507401
    }
    

    取引ボット

    次のは、FMexを対応した取引ボット及びサービスです。