日本語
5. Web API
5.1 Web APIについて
  1. 外部から共有メモリやデータベースに格納されているデータを検索または更新する機能を提供します。
  2. 様々な集計条件でポジションをサマリーしてレポートを作成することができます。
  3. CGIプログラムだけ提供します。別途Apache HTTPサーバーを構築してCGIを利用するための設定が必要です。
  4. 認証機能がついていません。必要に応じてHTTPサーバーにてBasic認証やDigest認証若しくはクライアント認証を設定してください。
5.2 プロトコル
ItemDescription
ProtocolHTTP / HTTPS
URL/fxService.cgi
MethodPOST
Content-Typetext/plain
RequestXML
ResponseJSON
5.3 設定
HTTPサーバーのconfファイルに以下の設定を追加してください。
  • SetEnv MYSQL_DB scm_fxtrade
  • SetEnv MYSQL_HOST localhost
  • SetEnv MYSQL_USER fxtrade
  • SetEnv MYSQL_PWD fxtrade
  • SetEnv MAX_CONTENT_LENGTH 65536
  • SetEnv SHM_SEL_DB 1
5.4 API仕様
5.4.1 共通仕様
•レスポンスのフォーマット
{
  "status":∼,    戻り値 [0(成功), 1(失敗)]
  "data":{∼}
}
5.4.2 アカウント情報取得
•リクエスト
取得元: 共有メモリ → DB
<fxservice>
  <method>getAccount</method>
  <params>
    <accountid>∼</accountid>    アカウントID [必須] [複数指定可能]
    ...
  </params>
</fxservice>
•レスポンス
フォーマット: [{"status":∼, "data":{∼}}, ...]
{
  "AccountID": "∼",
  "Balance": ∼,
  "Equity": ∼,
  "DayPL": ∼,
  "UsedMargin": ∼,
  "UsableMargin": ∼,
  "GrossPL": ∼,
  "Hedging": "∼"
}
5.4.3 マッケートデータ取得
•リクエスト
取得元: 共有メモリ → DB
<fxservice>
  <method>getOffer</method>
  <params>
    <symbol>∼</symbol>    シンボル [オプション] [複数指定可能]
    ...
  </params>
</fxservice>
•レスポンス
フォーマット: {"status":∼, "data":[{∼}, ...]}
{
  "OfferID": "∼",
  "Symbol": "∼",
  "Bid": ∼,
  "Ask": ∼,
  "High": ∼,
  "Low": ∼,
  "PipCost": ∼,
  "PointSize": ∼,
  "Time": "∼"
}
5.4.4 オープンポジション情報取得
•リクエスト
取得元: 共有メモリ → DB
<fxservice>
  <method>getOpenTrade</method>
  <params>
    <accountid>∼</accountid>    アカウントID [必須]
  </params>
</fxservice>
•レスポンス
フォーマット: {"status":∼, "data":[{∼}, ...]}
{
  "TradeID": "∼",
  "Symbol": "∼",
  "Amount": ∼,
  "BS": "∼",
  "Open": ∼,
  "Close": ∼,
  "Stop": ∼,
  "Limit": ∼,
  "High": ∼,
  "Low": ∼,
  "PL": ∼,
  "GrossPL": ∼,
  "OpenTime": "∼",
  "CloseTime": "∼",
  "MaxSumPL": ∼,
  "MaxSumPLCount": ∼,
  "MaxSumPLTime": "∼",
  "CurSumPL": ∼,
  "CurSumPLCount": ∼
}
5.4.5 クローズポジション情報取得
•リクエスト
取得元: DB
<fxservice>
  <method>getClosedTrade</method>
  <params>
    <accountid>∼</accountid>    アカウントID [必須]
    <startdate>∼</startdate>    注文時間 ≥ ∼ [オプション]
    <enddate>∼</enddate>        決済時間 ≤ ∼ [オプション]
  </params>
</fxservice>
•レスポンス
フォーマット: [{∼}, ...]
{
  "TradeID": "∼",
  "Symbol": "∼",
  "Amount": ∼,
  "BS": "∼",
  "Open": ∼,
  "Close": ∼,
  "Stop": ∼,
  "Limit": ∼,
  "High": ∼,
  "Low": ∼,
  "PL": ∼,
  "GrossPL": ∼,
  "OpenTime": "∼",
  "CloseTime": "∼",
  "MaxSumPL": ∼,
  "MaxSumPLCount": ∼,
  "MaxSumPLTime": "∼",
  "CurSumPL": ∼,
  "CurSumPLCount": ∼
}
5.4.6 ヒストリカルデータ取得
•リクエスト
取得元: 共有メモリ
<fxservice>
  <method>getPriceBar</method>
  <params>
    <symbol>∼</symbol>    シンボル [必須]
    <period>∼</period>    時間足 [必須]
  </params>
</fxservice>
•レスポンス
フォーマット: {"status":∼, "data":[{∼}, ...]}
{
  "Symbol": "∼",
  "StartDate": "∼",
  "Period": "∼",
  "AskClose": ∼,
  "AskHigh": ∼,
  "AskLow": ∼,
  "AskOpen": ∼,
  "BidClose": ∼,
  "BidHigh": ∼,
  "BidLow": ∼,
  "BidOpen": ∼
}
5.4.7 レポート作成
•リクエスト
取得元: DB
<fxservice>
  <method>getReport</method>
  <params>
    <rpttype>∼</rpttype>    レポート種類 [必須] [利用可能値: 1(summary), 2(details)]
    <accountid>∼</accountid>アカウントID [必須]
    <symbol>∼</symbol>      シンボル [オプション]
    <method>∼</method>      ストラテジーメソッド [オプション]
    <startdate>∼</startdate>注文時間 ≥ ∼ [オプション]
    <enddate>∼</enddate>    注文時間 ≤ ∼ [オプション]
    <frompl>∼</frompl>      損益 ≥ ∼ [オプション]
    <topl>∼</topl>          損益 ≤ ∼ [オプション]
    <grouping>
      <key>∼</key>          集計キー [オプション] [複数指定可能]
                             [利用可能値 1(Symbol), 2(Method), 3(Year), 4(Month), 5(Week)]
      ...
    </grouping>
    <maxcounts>∼</maxcounts>最大件数 [オプション] [デフォルト値:200]
  </params>
</fxservice>
•レスポンス
フォーマット: [{∼}, ...]
1:summary
{
  "Symbol": "∼",
  "TradeMethodName": "∼",
  "_year": ∼,
  "_month": ∼,
  "_week": ∼,
  "PL": ∼,
  "GrossPL": ∼,
  "Counts": ∼
}
2:details
{
  "TradeID": "∼",
  "Symbol": "∼",
  "Amount": ∼,
  "BS": "∼",
  "Open": ∼,
  "Close": ∼,
  "Stop": ∼,
  "Limit": ∼,
  "High": ∼,
  "Low": ∼,
  "PL": ∼,
  "GrossPL": ∼,
  "OpenTime": "∼",
  "CloseTime": "∼",
  "MaxSumPL": ∼,
  "MaxSumPLCount": ∼,
  "MaxSumPLTime": "∼",
  "CurSumPL": ∼,
  "CurSumPLCount": ∼,
  "TradeMethodPeriod": "∼",
  "TradeMethodName": "∼",
  "TrailStopPeriod": "∼",
  "TrailStopName": "∼",
  "TrailMoveTsName": "∼"
}
5.4.8 実行プラン取得
•リクエスト
取得元: DB
<fxservice>
  <method>getImplPlan</method>
  <params>
    <accountid>∼</accountid>    アカウントID [必須]
  </params>
</fxservice>
•レスポンス
フォーマット: [{∼}, ...]
{
  "Symbol": "∼",
  "IP1": "∼",
  "IP2": "∼",
  "IP3": "∼",
  ...
  "IP20": "∼"
}
5.4.9 実行プラン更新
•リクエスト
更新先: DB
<fxservice>
  <method>setImplPlan</method>
  <params>
    <accountid>∼</accountid>    アカウントID [必須]
    <param>
      <symbol>∼</symbol>        シンボル [必須]
      <ip1>∼</ip1>              プラン1 [オプション]
      ...
      <ip20>∼</ip20>            プラン20 [オプション]
      <loginid>∼</loginid>      ログインID [オプション]
    </param>
  </params>
</fxservice>
•レスポンス
"ok"(成功), ""(失敗)