输入/搜索内容
入门
欢迎使用发明者量化交易平台
快速开始
密钥安全性
平台基础
账号与计费
实盘计费与充值
子账号
交易所
通用协议
本地凭据文件
交易所特殊说明
证券与期货
加密货币
托管者
策略库
实盘
编写策略
开发工具
回测系统
进阶专题
数据与研究
对外接口

所有方法都通过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在托管者上执行一段代码代码可以真实下单

API KEY需要有对应方法的权限,见创建ApiKey。

参数传法

args有两种写法:

  • 数组:按上表的顺序传位置参数,例如[123, "ok"]。
  • 对象:按参数名传值,例如{"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。
node运行实盘的托管者Id,可用GetNodeList查询;不写或为-1时自动分配。
group实盘分组Id,可用GetRobotGroupList查询。
appid自定义标签,GetRobotList可以按标签筛选。

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对应的发明者量化交易平台账号的账户信息。

返回值

json
{ "code":0, "data":{ "result":{ "balance":22944702436, "concurrent":0, "consumed":211092719653, "email":"[email protected]", "openai":false, "settings":null, "sns":{"wechat":true}, "uid":"105ea6e51bcc177926a10fdbb7e2a1d6", "username":"abc" }, "error":null } }
  • balance: 账户余额,单位为USD。为了控制精度使用整数表示,除以1e8(10的8次方)得到实际数值,示例中为229.44702436。
  • consumed: 累计消费金额,单位与换算方式同balance。

参数

无参数

GetNodeList方法用于获取请求中的API KEY对应的平台账号可以使用的托管者列表,包括自己的托管者和平台的公共托管者。

返回值

json
{ "code": 0, "data": { "result": { "all": 1, "nodes": [{ "build": "3.7", "city": "...", "created": "2024-11-08 09:21:08", "date": "2024-11-08 16:37:16", "forward": "...", "guid": "...", "host": "node.fmz.com:9902", "id": 123, "ip": "...", "is_owner": true, "loaded": 0, "name": "MacBook-Pro-2.local", "online": true, "os": "darwin/amd64", "peer": "...", "public": 0, "region": "...", "tunnel": false, "version": "...", "wd": 0 }] }, "error": null } }

返回值字段说明(字面意思较明显的不再赘述):

  • all: 托管者总数(包括公共托管者)。
  • nodes: 记录托管者节点详细信息。
    • build: 版本号。
    • city: 所在城市。
    • is_owner: true表示是私有托管者,false表示是公共托管者。
    • loaded: 负载,搭载策略实例的个数。
    • public: 0表示私有托管者,1表示公共托管者。
    • region: 地理位置。
    • version: 托管者详细版本信息。
    • wd: 是否开启离线报警,0表示未开启。

一键部署的托管者包含一些额外信息,字段以ecs_、unit_前缀开头,记录了一键部署托管者服务器的相关信息(运营商名称、配置、状态等),计费周期、价格等信息,不再赘述。

参数

名称类型必填描述

offset

number

否

分页偏移,默认为0。

limit

number

否

每页数量;不传或小于等于0时返回全部。

DeleteNode方法用于删除请求中API KEY对应的发明者量化交易平台账号下的托管者节点,删除的托管者节点ID为nid参数指定的托管者ID。

返回值

json
{ "code":0, "data":{ "result":true, "error":null } }
  • result: 是否成功删除关联的托管者程序。

参数

名称类型必填描述

nid

number

是

nid参数用于指定要删除的托管者ID,可通过GetNodeList方法获取账号下托管者的信息。

GetExchangeList方法用于获取FMZ量化交易平台支持的交易所列表及其配置信息。

返回值

isSummary参数为false时,返回的数据:

json
{ "code": 0, "data": { "result": { "exchanges": [{ "category": "加密货币||Crypto", "eid": "Futures_Binance", "id": 74, "logo": "/upload/asset/d8d84b23e573e9326b99.svg", "meta": "[{\"desc\": \"Access Key\", \"qr\":\"apiKey\",\"required\": true, \"type\": \"string\", \"name\": \"AccessKey\", \"label\": \"Access Key\"}, {\"encrypt\": true, \"qr\":\"secretKey\",\"name\": \"SecretKey\", \"required\": true, \"label\": \"Secret Key\", \"type\": \"password\", \"desc\": \"Secret Key\"}]", "name": "币安期货|Futures_Binance", "priority": 200, "stocks": "BTC_USDT,ETH_USDT,ETH_USD", "website": "https://accounts.binance.com/zh-TC/register?ref=45110270" }] }, "error": null } }

isSummary参数为true时,返回的数据:

json
{ "code": 0, "data": { "result": { "exchanges": [{ "category": "加密货币||Crypto", "eid": "Futures_Binance", "id": 74, "logo": "/upload/asset/d8d84b23e573e9326b99.svg", "name": "币安期货|Futures_Binance", "priority": 200, "website": "https://accounts.binance.com/zh-TC/register?ref=45110270" }] }, "error": null } }
  • meta: 交易所配置元数据。

参数

名称类型必填描述

isSummary

bool

是

isSummary参数用于指定返回的数据是否为摘要信息。

GetPlatformList方法用于获取请求中的API KEY对应的发明者量化交易平台账号下的已添加的交易所列表。

返回值

json
{ "code": 0, "data": { "result": { "all": 2, "platforms": [{ "category": "加密货币||Crypto", "date": "2023-12-07 13:44:52", "eid": "Binance", "id": 123, "label": "币安", "logo": "...", "name": "币安现货|Binance", "stocks": ["BTC_USDT", "LTC_USDT", "ETH_USDT", "ETC_USDT", "BTC_TUSD", "ETH_TUSD", "BNB_TUSD"], "website": "..." }, { "category": "通用协议|Custom Protocol", "date": "2020-11-09 11:23:48", "eid": "Exchange", "id": 123, "label": "XX交易所REST协议", "logo": "...", "name": "通用协议|Custom Protocol", "stocks": ["BTC_USDT", "ETH_USDT"], "website": "" }] }, "error": null } }
  • all: 已添加/配置的交易所对象个数。
  • platforms: 交易所相关信息。
    • eid: 在发明者量化交易平台上交易所的Id,一些配置、参数中会使用到eid。

参数

名称类型必填描述

offset

number

否

分页偏移,默认为0。

limit

number

否

每页数量;不传或小于等于0时返回全部。

GetStrategyList方法用于获取平台策略信息。

返回值

json
{ "code": 0, "data": { "result": { "all": 123, "strategies": [{ "category": 9, "date": "2024-11-10 20:40:04", "description": "", "forked": 0, "hits": 0, "id": 123, "is_buy": false, "is_owner": false, "language": 0, "last_modified": "2024-11-11 17:23:52", "name": "HedgeGridStrategy", "profile": { "avatar": "...", "nickname": "abc", "uid": "4ed225440db1eda23fe05ed10184113e" }, "public": 0, "tags": "", "uid": "4ed225440db1eda23fe05ed10184113e", "username": "abc" }] }, "error": null } }
  • all: 筛选查询出的策略总数。
  • strategies: 查询出的具体策略信息,其中category、language的取值同上面的参数说明。

参数

名称类型必填描述

offset

number

是

分页偏移。

length

number

是

每页数量;小于等于0时返回全部。

strategyType

number

是

查询范围:

  • -1:自己的策略和租用的策略(含官方策略)。
  • 0:自己的策略和租用的策略(不含官方策略)。
  • -3:只查自己的策略。
  • -6:只查租用的策略(含已过期的)。
  • -4:官方策略。
  • -2:策略广场中公开的策略和付费策略。
  • 1:已公开的策略。
  • 2:待审核的策略。

category

number

是

策略类型:

  • -1:全部。
  • 0:普通策略。
  • 20:模板类库。
  • 21:交易插件。

language

number

是

策略的编程语言:

  • -1:全部语言。
  • 0:JavaScript(TypeScript策略也按JavaScript保存,源码中带//@ts-check)。
  • 1:Python。
  • 3:Blockly可视化。
  • 4:My语言。
  • 5:PINE语言。
  • 6:Workflow工作流。
  • 7:Rust。

kw

string

是

按策略名称模糊匹配的关键字,多个词用空格分隔;空字符串表示不筛选。以id:开头时按策略Id查询,例如id:123,456。

groupId

number

否

策略分组:-1全部(默认),0未分组,大于0为指定分组。只对自己的策略生效。

orderBy

string

否

排序字段:name、last_modified、date,可在后面加 asc表示升序(默认降序);空字符串为默认排序。

备注

参数中没有needArgs。按旧版文档在category之后多传一个参数,会使后面的参数错位,请按上面的顺序传参,或按参数名传值:

plaintext
api('GetStrategyList', 0, 10, -3, -1, -1, '') # 自己的前10个策略 api('GetStrategyList', strategyType=-3, language=7) # 自己的全部Rust策略

GetRobotGroupList方法用于获取请求中的API KEY对应的发明者量化交易平台账号下的实盘分组列表。

返回值

json
{ "code": 0, "data": { "result": { "items": [{ "id": 3417, "name": "测试" }, { "id": 3608, "name": "实盘演示" }] }, "error": null } }
  • items: 实盘分组信息。
    • id: 实盘分组Id。
    • name: 实盘分组名称。

items字段只记录创建的新分组,「默认」分组不在items中。

参数

无参数

GetRobotList方法用于获取请求中的API KEY对应的平台账号下的实盘列表。参数都可以省略。

返回值

json
{ "code": 0, "data": { "result": { "all": 1, "concurrent": 0, "robots": [{ "charge_time": 1731654846, "date": "2024-11-12 14:05:29", "end_time": "2024-11-15 14:56:32", "fixed_id": 4509153, "id": 591026, "is_sandbox": 0, "name": "测试", "node_guid": "45891bcf3d57f99b08a43dff76ee1ea1", "node_id": 4519153, "node_public": 0, "profit": 0, "public": 0, "refresh": 1731651257000, "start_time": "2024-11-15 14:56:30", "status": 3, "strategy_id": 411670, "strategy_isowner": true, "strategy_language": 0, "strategy_name": "测试", "strategy_public": 0, "uid": "105ed6e511cc977921610fdbb7e2a1d6", "wd": 0 }] }, "error": null } }
  • all: 符合条件的实盘总数。
  • robots: 实盘信息,status为实盘状态码。
    • group_id: 实盘分组Id;如果策略实盘在默认分组中则没有group_id字段。

参数

名称类型必填描述

offset

number

否

分页偏移,默认为0。

length

number

否

每页数量;小于等于0时返回全部(默认)。

customStatus

number

否

按实盘状态码筛选,见实盘状态码;-1为全部实盘(默认),-2为全部实盘并按启动时间排序。

appId

string

否

按实盘的自定义标签(创建时settings中的appid)筛选,空字符串表示不筛选。

kw

string

否

按实盘名称模糊匹配的关键字,空字符串表示不筛选。

groupId

number

否

实盘分组:-1全部(默认),0未分组,大于0为指定分组。

orderBy

string

否

排序字段:name、status、node、profit、date、refresh、start_time、strategy_name,可在后面加 asc表示升序(默认降序);空字符串为默认排序。

strategyId

number

否

大于0时只返回该策略的实盘,默认为0(不筛选)。

备注

以签名验证页面Python示例中的api()为例:

  • api('GetRobotList'):获取全部实盘。
  • api('GetRobotList', 'member2'):只传一个字符串时视为标签,获取标签为member2的全部实盘。
  • api('GetRobotList', 0, 100, -1, 'member2', ''):按位置传参,从第0条开始最多获取100个标签为member2的实盘。
  • api('GetRobotList', appId='member2', length=100):按参数名传值,效果同上。

GetRobotDetail方法用于获取请求中的API KEY对应的发明者量化交易平台账号下的实盘详细信息,所要被获取详细信息的实盘Id为robotId参数指定的实盘Id。

返回值

json
{ "code": 0, "data": { "result": { "robot": { "charge_time": 1732246539, "charged": 5850000, "consumed": 5375000000, "date": "2018-12-28 14:34:51", "favorite": { "added": false, "type": "R" }, "fixed_id": 123, "hits": 1, "id": 123, "is_deleted": 0, "is_manager": true, "is_sandbox": 0, "name": "测试", "node_id": 123, "pexchanges": { "123": "Futures_OKX" }, "phash": { "123": "ca1aca74b9cf7d8624f2af2dac01e36d" }, "plabels": { "123": "OKX期货" }, "priority": 0, "profit": 0, "public": 0, "refresh": 1732244453000, "robot_args": "[]", "start_time": "2024-11-22 11:00:48", "status": 1, "strategy_args": "[]", "strategy_exchange_pairs": "[60,[123],[\"ETH_USDT\"]]", "strategy_id": 123, "strategy_last_modified": "2024-11-21 16:49:25", "strategy_name": "测试", "strategy_public": "0", "uid": "105ed6e51bcc17792a610fdbb7e2a1d6", "username": "abc", "wd": 0 } }, "error": null } }
  • charge_time: 下次扣费时间(Unix时间戳,秒),即当前已付费时段的截止时间。
  • charged: 累计计费时长,单位为秒。
  • consumed: 累计扣费金额,单位为USD,按1e8放大为整数,示例中5375000000即53.75 USD。
  • date: 创建日期。
  • fixed_id: 实盘运行时指派的托管者ID,如果是自动,该值为-1。
  • is_manager: 是否有权限管理该实盘。
  • is_sandbox: 是否是模拟盘。
  • name: 实盘名称。
  • node_id: 托管者ID。
  • pexchanges: 实盘配置的交易所对象,123为pid,"Futures_OKX"为交易所Id(eid)。
  • plabels: 实盘配置的交易所对象的标签信息。
  • profit: 实盘收益数据。
  • public: 实盘是否公开。
  • refresh: 最近活跃时间。
  • strategy_exchange_pairs: 配置的交易所对象,设置的交易对信息。
  • wd: 是否开启离线报警。

参数

名称类型必填描述

robotId

number

是

robotId参数用于指定所要获取详细信息的实盘Id,可以用GetRobotList方法获取账号下实盘的信息,其中包含实盘Id。

备注

strategy_exchange_pairs属性说明,用以下数据为例:

plaintext
"[60,[44314,42960,15445,14703],[\"BTC_USDT\",\"BTC_USDT\",\"ETH_USDT\",\"ETH_USDT\"]]"

其中第一个数据60,代表实盘设置的默认K线周期为1分钟,即60秒。

[44314,42960,15445,14703]为实盘配置的交易所对象的pid(按添加顺序)。

[\"BTC_USDT\",\"BTC_USDT\",\"ETH_USDT\",\"ETH_USDT\"]为实盘配置的交易所对象设置的交易对(按添加顺序与pid一一对应)。

GetRobotLogs方法用于获取请求中的API KEY对应的发明者量化交易平台账号下的实盘日志信息,所要被获取日志信息的实盘Id为robotId参数指定的实盘Id。

返回值

json
{ "code": 0, "data": { "result": { "chart": "", "chartTime": 0, "logs": [{ "Total": 20, "Max": 20, "Min": 1, "Arr": [] }, { "Total": 0, "Max": 0, "Min": 0, "Arr": [] }, { "Total": 0, "Max": 0, "Min": 0, "Arr": [] }], "node_id": 123, "online": true, "refresh": 1732201544000, "status": 4, "summary": "...", "updateTime": 1732201532636, "wd": 0 }, "error": null } }
  • logs: 日志信息;查询出的若干条日志数据在Arr字段中。
    logs中第一个数据结构为实盘数据库中策略日志表中的日志记录。
    logs中第二个数据结构为实盘数据库中收益日志表中的日志记录。
    logs中第三个数据结构为实盘数据库中图表日志表中的日志记录。
  • summary: 实盘状态栏数据。

参数

名称类型必填描述

robotId

number

是

robotId参数用于指定所要获取日志信息的实盘Id,可以用GetRobotList方法获取账号下实盘的信息,其中包含实盘Id。

logMinId

number

是

logMinId参数用于指定Log日志的最小Id。

logMaxId

number

是

logMaxId参数用于指定Log日志的最大Id。

logOffset

number

是

logOffset参数用于设置偏移,由logMinId和logMaxId确定范围后,根据logOffset偏移(跳过多少条记录),开始作为获取数据的起始位置。

logLimit

number

是

logLimit参数用于设置确定起始位置后,选取的数据记录条数。

profitMinId

number

是

profitMinId参数用于设置收益日志的最小Id。

profitMaxId

number

是

profitMaxId参数用于设置收益日志的最大Id。

profitOffset

number

是

profitOffset参数用于设置偏移(跳过多少条记录),作为起始位置。

profitLimit

number

是

profitLimit参数用于设置确定起始位置后,选取的数据记录条数。

chartMinId

number

是

chartMinId参数用于设置图表数据记录的最小Id。

chartMaxId

number

是

chartMaxId参数用于设置图表数据记录的最大Id。

chartOffset

number

是

chartOffset参数用于设置偏移。

chartLimit

number

是

chartLimit参数用于设置获取的记录条数。

chartUpdateBaseId

number

是

chartUpdateBaseId参数用于设置查询更新后的基础Id。

chartUpdateDate

number

是

chartUpdateDate参数用于设置数据记录更新时间戳,会筛选出比这个时间戳大的记录。

summaryLimit

number

是

summaryLimit参数用于设置查询的状态栏数据字节数。查询实盘的状态栏数据,该参数类型为整型。
设置0表示不需要查询状态栏信息,设置为非0表示需要查询的状态栏信息字节数(该接口不限制数据量,可以指定一个较大的summaryLimit参数来获取所有状态栏信息),状态栏数据储存在返回的数据的summary字段中。

logExchange

string

否

只返回该交易所对象(按标签)的日志,空字符串表示不筛选。

logKeyword

string

否

只返回日志内容包含该关键字的日志,空字符串表示不筛选。

logTypes

string

否

只返回这些类型的日志,日志类型号用逗号分隔,例如"0,1,2"只看买单、卖单、撤单日志;空字符串表示全部类型。

备注

  • 数据库中的策略日志表
    返回数据中logs的属性值(数组结构)的第一个元素中(日志数据)Arr属性值描述如下:

    plaintext
    "Arr": [ [3977, 3, "Futures_OKX", "", 0, 0, "Sell(688.9, 2): 20016", 1526954372591, "", ""], [3976, 5, "", "", 0, 0, "this_week 仓位过多, 多: 2", 1526954372410, "", ""] ],
    idlogTypeeidorderIdpriceamountextradatecontractTypedirection
    39773"Futures_OKX"""00"Sell(688.9, 2): 20016"1526954372591""""
    39765""""00"this_week 仓位过多, 多: 2"1526954372410""""

    extra为打印的日志的附加消息。

    logType值具体代表的日志类型描述如下:

    logType:0123456
    logType意义:BUYSALERETRACTERRORPROFITMESSAGERESTART
    中文意义买单类型日志卖单类型日志撤销错误收益日志重启
  • 数据库中的收益图表日志表
    该图表日志表数据与策略日志表中的收益日志一致。

    plaintext
    "Arr": [ [202, 2515.44, 1575896700315], [201, 1415.44, 1575896341568] ]

    以其中一条日志数据为例:

    plaintext
    [202, 2515.44, 1575896700315]

    202为日志Id,2515.44为收益数值,1575896700315为时间戳。

  • 数据库中的图表日志表

    plaintext
    "Arr": [ [23637, 0, "{\"close\":648,\"high\":650.5,\"low\":647,\"open\":650,\"x\":1575960300000}"], [23636, 5, "{\"x\":1575960300000,\"y\":3.0735}"] ]

    以其中一条日志数据为例:

    plaintext
    [23637, 0, "{\"close\":648,\"high\":650.5,\"low\":647,\"open\":650,\"x\":1575960300000}"],

    23637为日志Id,0为图表数据系列索引,最后的数据"{\"close\":648,\"high\":650.5,\"low\":647,\"open\":650,\"x\":1575960300000}"为日志数据,这条数据为图表上的K线数据。

NewRobot方法用于在请求中的API KEY对应的平台账号下创建一个实盘并启动运行,与在网页上创建实盘一样会扣费。

返回值

json
{ "code":0, "data":{ "result":591988, "error":null } }
  • result: 创建成功时为新实盘的Id;失败时为负数,含义同实盘状态码中的异常代码(例如-2没有找到托管者,-5余额不足)。

参数

名称类型必填描述

settings

JSON对象

是

实盘配置,字段见扩展API接口详解中的「实盘配置(settings)」。例如:

json
{ "name": "test", "strategy": 123, "args": [], "exchanges": [ {"pid": 123, "pair": "SOL_USDT"} ], "period": 60, "node": 123, "group": 123, "appid": "test" }

备注

用eid方式直接传入交易所配置时,平台不保存meta中的密钥,之后每次用RestartRobot重启这个实盘都必须传入settings。

RestartRobot方法用于启动(重启)请求中的API KEY对应的平台账号下的实盘,实盘Id由robotId参数指定。启动会扣费。

返回值

json
{ "code":0, "data":{ "result":1, "error":null } }
  • result: 实盘状态码,1即运行中。

参数

名称类型必填描述

robotId

number

是

实盘Id,可以用GetRobotList方法查询。

settings

JSON对象

否

实盘配置,字段见扩展API接口详解中的「实盘配置(settings)」。传入时先用它更新实盘的配置(名称、参数、交易所、K线周期、托管者、分组),再启动;不能更换策略。

备注

在平台页面创建、使用已添加交易所账户(pid)的实盘,可以只传robotId,按实盘当前的配置启动。用eid方式直接传入交易所配置的实盘(通常由扩展API接口创建),平台没有保存密钥,每次重启都必须传入settings。

StopRobot方法用于停止请求中API KEY对应的发明者量化交易平台账号下的实盘。停止运行的实盘Id由robotId参数指定。

返回值

json
{ "code":0, "data":{ "result":2, "error":null } }
  • result: 实盘状态码,2表示停止中。

参数

名称类型必填描述

robotId

number

是

robotId参数用于指定要停止的实盘Id。可以通过GetRobotList方法获取账号下的实盘信息,其中包含实盘Id。

CommandRobot方法用于向请求中的API KEY对应的发明者量化交易平台账号下的实盘发送交互命令,接收交互命令的实盘Id为robotId参数指定的实盘Id,交互命令由策略中调用的GetCommand()函数捕获返回。

返回值

json
{ "code":0, "data":{ "result":true, "error":null } }
  • result: 交互指令是否发送成功;向一个没有运行的实盘发送指令,返回的数据中result为false。

参数

名称类型必填描述

robotId

number

是

robotId参数用于指定接收交互指令的实盘Id,可以用GetRobotList方法获取账号下实盘的信息,其中包含实盘Id。

cmd

string

是

发送给实盘的交互命令,策略中用GetCommand()函数获取,见GetCommand。

备注

实盘策略,假设这个策略实盘处于运行中,实盘Id为123:

javascript
function main() { while (true) { var cmd = GetCommand() if (cmd) { Log(cmd) } Sleep(2000) } }

用签名验证页面Python示例中的api()调用api("CommandRobot", 123, "test command"),Id为123的实盘会收到交互指令:test command,然后通过Log函数输出打印出来。

DeleteRobot方法用于删除请求中的API KEY对应的平台账号下的实盘,实盘Id由robotId参数指定。运行中的实盘需要先停止才能删除。删除后不可恢复。

返回值

json
{ "code":0, "data":{ "result":0, "error":null } }
  • result: 删除操作的结果。
    • 0:删除成功。
    • -1:没有删除:实盘不存在,或者仍在运行、启动中、停止中。
    • -2:实盘已删除,但无法与实盘所在的托管者联系,日志数据没有删除;需要到托管者目录logs/storage/<实盘Id>/下手动删除(例如123.db3)。

参数

名称类型必填描述

robotId

number

是

要删除的实盘Id,可以用GetRobotList方法查询。

removeLog

bool

否

是否同时删除托管者上的实盘日志数据,默认为true。

PluginRun方法在托管者上执行一段JavaScript代码并返回结果,与开发工具中的「调试工具」、交易终端插件使用同一种执行机制(见插件原理与编写)。执行时不创建实盘、不计费,单次执行最长5分钟。

返回值

json
{ "code": 0, "data": { "result": "{\"logs\":[{\"PlatformId\":\"\",\"OrderId\":\"0\",\"LogType\":5,\"Price\":0,\"Amount\":0,\"Extra\":\"Hello FMZ\",\"Currency\":\"\",\"Instrument\":\"\",\"Direction\":\"\",\"Time\":1732267473108}],\"result\":\"\"}", "error": null } }
  • result: 执行结果,是一个JSON字符串:logs为代码中Log()输出的日志,result为main()返回值的JSON文本。

参数

名称类型必填描述

settings

JSON对象

是

执行配置,例如:

json
{ "source": "function main() {Log(\"Hello FMZ\")}", "node": 123, "period": 60, "exchanges": [{"pid": 123, "pair": "SOL_USDT"}] }
  • source:要执行的代码。入口为main(),其返回值就是执行结果。
  • strategy:不传source时,执行账号中这个Id的策略(例如交易插件)。
  • node:执行代码的托管者Id;不写或为-1时自动选择。
  • exchanges:交易所对象配置,写法同扩展API接口详解中的「实盘配置(settings)」。

备注

exchanges也可以不引用平台上的交易所账户,直接传入交易所配置,例如:

plaintext
{"eid": "Binance", "pair": "ETH_BTC", "meta": {"AccessKey": "...", "SecretKey": "..."}}

meta的字段名见GetExchangeList返回的meta。exchanges中通常只设置一个交易所对象(调试工具页面也只支持一个);设置两个不会报错,但代码中访问第二个交易所对象时会报错。