扩展API接口详解
所有方法都通过https://www.fmz.com/api/v1调用,请求格式与签名见签名验证,返回结构与错误码见扩展API接口返回码。各方法页面示例中的api()即签名验证页面Python示例中的函数。
方法一览
| 对象 | 方法 | 参数(按顺序,方括号内为可选参数) | 说明 | 注意 |
|---|---|---|---|---|
| 账号 | GetAccount | 无 | 账号信息 | 只读 |
| 托管者 | GetNodeList | [offset, limit] | 托管者列表 | 只读 |
| 托管者 | DeleteNode | nid | 删除托管者 | 删除,不可恢复 |
| 交易所 | GetExchangeList | isSummary | 平台支持的交易所及配置项 | 只读 |
| 交易所 | GetPlatformList | [offset, limit] | 已添加的交易所账户 | 只读 |
| 策略 | GetStrategyList | offset, length, strategyType, category, language, kw[, groupId, orderBy] | 策略列表 | 只读 |
| 实盘 | GetRobotGroupList | 无 | 实盘分组 | 只读 |
| 实盘 | GetRobotList | [offset, length, customStatus, appId, kw, groupId, orderBy, strategyId] | 实盘列表 | 只读 |
| 实盘 | GetRobotDetail | robotId | 实盘详细信息 | 只读 |
| 实盘 | GetRobotLogs | robotId, logMinId, …, summaryLimit[, logExchange, logKeyword, logTypes] | 日志、收益、图表与状态栏数据 | 只读 |
| 实盘 | NewRobot | settings | 创建并启动实盘 | 扣费;实盘会真实交易 |
| 实盘 | RestartRobot | robotId[, settings] | 启动(重启)实盘 | 扣费;实盘会真实交易 |
| 实盘 | StopRobot | robotId | 停止实盘 | 不会平仓 |
| 实盘 | CommandRobot | robotId, cmd | 向实盘发送交互命令 | 策略可能据此下单 |
| 实盘 | DeleteRobot | robotId[, removeLog] | 删除实盘 | 删除,不可恢复 |
| 调试 | PluginRun | settings | 在托管者上执行一段代码 | 代码可以真实下单 |
| 频道 | pub | robot, channel(URL参数),消息放在请求体 | 向实盘订阅的频道推送一条消息 | 不需要API KEY、不签名 |
API KEY需要有对应方法的权限,见创建ApiKey。
参数传法
args有两种写法:
- 数组:按上表的顺序传位置参数,例如
[123, "ok"]。按位置传参时,服务端只接受特定的参数个数,个数不符时返回Params number mismatch错误:- GetNodeList、GetPlatformList:0个或2个。
- GetStrategyList:0、6、7、8个;不传参数时
language为1(只返回Python策略),见GetStrategyList。 - GetRobotList:0、1、3、5、6、7、8个;只传1个参数时,它被当作
appId。 - GetRobotLogs:15~19个(15个时不查询状态栏)。
- RestartRobot、DeleteRobot:1个或2个;DeleteRobot只传
robotId时removeLog为false。
- 对象:按参数名传值,例如
{"robotId": 123, "cmd": "ok"}。参数名不区分大小写、忽略下划线,没有传的参数取默认值。可选参数多的方法(GetRobotList、GetRobotLogs、GetStrategyList)建议用这种写法。
实盘配置(settings)
NewRobot、RestartRobot、PluginRun的settings参数是一个JSON对象,常用字段如下:
| 字段 | 说明 |
|---|---|
| name | 实盘名称。 |
| strategy | 策略Id,可用GetStrategyList查询。RestartRobot不能更换实盘的策略。 |
| args | 策略参数,每个元素为["参数名", 值],例如[["Interval", 500]];策略没有参数时为[]。 |
| exchanges | 交易所对象配置数组,每个元素对应一个交易所对象,写法见下文。 |
| period | 默认K线周期,单位为秒,例如60、3600;不写时为60秒。请传60及以上的秒数,见表后说明。 |
| node | 运行实盘的托管者Id,可用GetNodeList查询;不写或为-1时自动分配。 |
| group | 实盘分组Id,可用GetRobotGroupList查询。 |
| appid | 自定义标签,GetRobotList可以按标签筛选。 |
period为0、1、2、3、4、5、10、12时按旧的周期编号解释(依次为1分钟、3分钟、5分钟、15分钟、30分钟、1小时、1天、1周),例如传1实际是180秒。
exchanges的元素有两种写法,同一个数组中不能混用(以第一个元素的写法为准):
- 引用平台上已添加的交易所账户:
{"pid": 123, "pair": "BTC_USDT"}。pid可用GetPlatformList查询(返回数据中的id)。 - 直接传入交易所配置:
{"eid": "Binance", "label": "test", "pair": "BTC_USDT", "meta": {"AccessKey": "...", "SecretKey": "..."}}。eid为交易所Id;meta的字段名见GetExchangeList返回的meta;label是交易所对象的标签,策略中用exchange.GetLabel()获取。平台不保存meta中的密钥,而是直接转发给托管者,所以用这种写法创建的实盘,每次重启时都必须重新传入settings。
通用协议交易所的写法:{"eid": "Exchange", "label": "test", "pair": "BTC_USDT", "meta": {"AccessKey": "...", "SecretKey": "...", "Front": "http://127.0.0.1:6666/test"}},Front为通用协议服务的地址。
本章内容整章阅读
| 名称 | 描述 |
| GetAccount | 获取当前API KEY所属账号的账户信息,包括余额和累计消费金额。 |
| GetNodeList | 获取当前账号可以使用的托管者列表,包括自己的托管者和平台的公共托管者。 |
| DeleteNode | 删除当前账号下的一个托管者;在线的托管者会被强制退出登录,其上的实盘全部变为「策略有错误」。 |
| GetExchangeList | 获取平台支持的交易所列表,以及每个交易所需要填写的配置项。 |
| GetPlatformList | 获取当前账号已添加的交易所账户列表。 |
| GetStrategyList | 按范围、类型、语言、关键字等条件查询策略列表。 |
| GetRobotGroupList | 获取当前账号的实盘分组列表;「默认」分组不在列表中。 |
| GetRobotList | 获取当前账号的实盘列表,可以按状态、标签、名称、分组、策略筛选;参数都可以省略。 |
| GetRobotDetail | 获取当前账号下一个实盘的详细信息,包括状态、计费、交易所配置和策略参数。 |
| GetRobotLogs | 获取当前账号下一个实盘的策略日志、收益日志、图表数据和状态栏数据。 |
| NewRobot | 在当前账号下创建一个实盘并启动运行;与在网页上创建实盘一样会扣费,实盘会真实交易。 |
| RestartRobot | 启动(重启)当前账号下的一个实盘,可以同时用新的配置替换原配置;启动会扣费。 |
| StopRobot | 停止当前账号下的一个实盘;停止不会自动平仓。 |
| CommandRobot | 向当前账号下运行中的实盘发送一条交互命令,策略用GetCommand接收。 |
| DeleteRobot | 删除当前账号下的一个实盘;运行中的实盘要先停止才能删除,删除后不可恢复。 |
| PluginRun | 在托管者上执行一段JavaScript代码并返回结果,不创建实盘、不计费,单次执行最长5分钟;代码可以真实下单。 |
| pub | 把一条消息推送到运行中实盘订阅的频道,供平台外部的系统(TradingView 的 Webhook 告警、自建交易系统、监控脚本等)向实盘发送数据。 |