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