输入/搜索内容
入门
平台基础
编写策略
开发工具
回测系统
进阶专题
数据与研究
扩展API接口
AI接入
创建ApiKey
验证方式
扩展API接口详解
GetAccount
GetNodeList
DeleteNode
GetExchangeList
GetPlatformList
GetStrategyList
GetRobotGroupList
GetRobotList
GetRobotDetail
GetRobotLogs
NewRobot
RestartRobot
StopRobot
CommandRobot
DeleteRobot
PluginRun
pub
扩展API接口返回码
实盘状态码

所有方法都通过https://www.fmz.com/api/v1调用,请求格式与签名见签名验证,返回结构与错误码见扩展API接口返回码。各方法页面示例中的api()即签名验证页面Python示例中的函数。

方法一览

对象方法参数(按顺序,方括号内为可选参数)说明注意
账号GetAccount无账号信息只读
托管者GetNodeList[offset, limit]托管者列表只读
托管者DeleteNodenid删除托管者删除,不可恢复
交易所GetExchangeListisSummary平台支持的交易所及配置项只读
交易所GetPlatformList[offset, limit]已添加的交易所账户只读
策略GetStrategyListoffset, length, strategyType, category, language, kw[, groupId, orderBy]策略列表只读
实盘GetRobotGroupList无实盘分组只读
实盘GetRobotList[offset, length, customStatus, appId, kw, groupId, orderBy, strategyId]实盘列表只读
实盘GetRobotDetailrobotId实盘详细信息只读
实盘GetRobotLogsrobotId, logMinId, …, summaryLimit[, logExchange, logKeyword, logTypes]日志、收益、图表与状态栏数据只读
实盘NewRobotsettings创建并启动实盘扣费;实盘会真实交易
实盘RestartRobotrobotId[, settings]启动(重启)实盘扣费;实盘会真实交易
实盘StopRobotrobotId停止实盘不会平仓
实盘CommandRobotrobotId, cmd向实盘发送交互命令策略可能据此下单
实盘DeleteRobotrobotId[, removeLog]删除实盘删除,不可恢复
调试PluginRunsettings在托管者上执行一段代码代码可以真实下单
频道pubrobot, 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 告警、自建交易系统、监控脚本等)向实盘发送数据。