中文
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"(成功), ""(失败)