5. Web API
5.1 Web APIについて
- 外部から共有メモリやデータベースに格納されているデータを検索または更新する機能を提供します。
- 様々な集計条件でポジションをサマリーしてレポートを作成することができます。
- CGIプログラムだけ提供します。別途Apache HTTPサーバーを構築してCGIを利用するための設定が必要です。
- 認証機能がついていません。必要に応じてHTTPサーバーにてBasic認証やDigest認証若しくはクライアント認証を設定してください。
5.2 プロトコル
Item | Description |
---|
Protocol | HTTP / HTTPS |
URL | /fxService.cgi |
Method | POST |
Content-Type | text/plain |
Request | XML |
Response | JSON |
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"(成功), ""(失敗)