# 圣杯-自适应马丁-V3手册

By [Benson](https://paragraph.com/@bensonxu) · 2025-03-19

---

交易平台说明
======

### 实盘名称

*   自填
    

### K线周期

*   已内置，可以不修改，随便写也不影响
    

### 交易平台

*   在FMZ交易所中已添加好的币安交易所，可选范围是币安期货、OKX期货（同时支持模拟盘api）
    
*   选择币种时，勾选自定义，填写币种后添加下划线和USDT，例如 VET\_USDT，之后点击加号，添加后会在下方有红框小字出现
    
*   添加多个币种请重复上一行的操作，若币种过多可以勾选自定义将币种按照英文逗号隔开填入实现一次性批量添加，例如勾选自定义然后填写 BTC\_USDT,ETH\_USDT,ETC\_USDT 点击加号添加
    

### 托管者

*   可以选择FMZ免费公共服务器，但存在不稳定的风险
    
*   服务器购买平台推荐阿里云，服务器地点建议新加坡或者东京，操作系统必须带有python环境例如乌班图18或者CentOS8
    
*   建议本策略配备单独一台服务器，如果报ip错请调节主动延迟，从100到300分别测试，这是由于单分钟内请求次数过多，原因可能是服务器配置较好运行过快导致相同时间循环了更多次
    
*   程序运行后需要定期检查服务器内存cpu等重要硬件运行状态（至少一天一次），当内存或者cpu接近上限时，可以根据自己需要选择重启方式以释放内存。不平仓恢复数据重启同样也可以释放缓存。
    

已知道马丁风险并自信承担
============

*   自行承担数字货币合约市场高杠杆和剧烈波动的风险
    
*   请自行遵守单码单用及策略功能保密的原则
    
*   在不设置止损的情况下，自行承担爆仓风险
    
*   资管方与代理方有义务如实宣传以上风险提示
    

系统设置
====

### 重置实盘

*   当勾选此选项，在开机后会根据U本位合约账户余额重置本金，同时还会重置运行时长、收益以及对应收益率，之前的收益记录将会被划转到累计收益
    

### 接收数据的邮箱

*   设置自己的邮箱，如果触发了发送实盘数据的指令，将会把数据发送至此邮箱
    

### 复利

*   系统内部将会定义一个标记投资额，此投资额将决定下单金额止损等等实际执行的本金。例如初始资金1000，下单金额为10，止损为-100，当达到1200触发复利后，标记投资额将会更新至1200，下单金额会调整至12。止损调整至-120
    
*   勾选复利后，将展开数个复利逻辑，逻辑与逻辑间并行相互不冲突，可以根据需求决定是否打开以及打开多少个逻辑
    
*   占用触发线：只有当保证金占用达到触发线以下，所在逻辑模式触法后才会复利。当填写小于等于1的数字时将默认作为比例
    
*   复利模式：其中包含时间或者收益可选项。选择填写时间时，当运行时间达到所设值时将会触发本复利；选择填写正收益时，如果当前资金-最新标记投资额大于此正收益时将会触发本复利，当填写小于等于1的数字时将默认作为比例系数；选择填写负收益时，若填写负数，如果当前资金-最新标记投资额小于此负收益时将会触发本复利，当填写小于等于1的数字时将默认作为比例系数；选择填写收益模式时可以选择是否进行全部仓位平仓
    

### 手续费

*   设定程序内的用来计算交易费用的参数。在真金盘中不会决定真实交易手续费，仅仅是用来统计使用；在模拟盘中不仅用来统计，还会用来真实的消耗
    
*   一般maker与taker成交的比例为4/6，正常币安用户约为0.0003
    

### 杠杆

*   对实盘所有交易对设置一样的杠杆，杠杆设置范围是1-100
    
*   大部分山寨币杠杆上限都不高，在开实盘前务必确认好真实交易环节下，是否所有的选定币种都能达到目标杠杆开仓需求以及头寸需求，如果有的币不能达到杠杆需求，那么可能会造成危险的加仓行为
    
*   如果选择1倍杠杆，相当于跑现货
    

### 划转阈值

*   通过设定阈值可以达到自动转出的功能，当达到阈值且超过2u时会自动转出，此数值显示了一共累计的转出资金，在不重置数据前转出资金会累计计算，重置数据后会将转出资金结算到累计收益中
    

### 主循环延迟

*   用户控制程序每次循环时需等待的时间延迟。设置1000时，每次循环一次程序将会暂停1秒
    
*   当单次循环运行过快时，会增加服务器访问币安的请求次数，会导致ip报错，这种情况需要适当调节主动延迟，从100到300分别测试，此单位为毫秒
    
*   对于双开机器人来说，不增加住循环延迟情况下一轮耗时为200ms，且不随币种增加延迟增加，后期会随着数据增加相应增加。
    
*   每次轮循双开真金访问压力为7，双开模拟为1。真金双开200ms不开主动延迟一个服务器最多跑一个，若一个服务器开两个机器人需要调节主动延迟保证至少轮训在500ms左右，开四个机器人则需要1000ms，以此类推
    

### 加仓延迟

*   用户控制加仓操作的延迟。提高加仓延迟的数值可以降低补仓的速率，若设置为10000意味着至少每隔10秒才能进行加仓一次
    
*   提高加仓延迟可以提高在高波动的行情下扛单效率，经实盘验证，在0.01间距下设置延迟20秒加仓延迟扛单效率可以提高15-25%
    

### 循环图表时间延迟

*   用户控制程序每次策略图表刷新时间延迟。设置600000时，策略图每隔10分钟更新一次
    

### 面板交易数据显示延迟

*   用户控制面板交易数据刷新时间延迟。设置600000时，面板交易数据每隔10分钟更新一次，此刷新仅仅影响网页上历史数据显示，不影响交易，由于刷新会占用大量算力，建议至少10分钟刷新一次
    
*   数据刷新范围仅限“币种性能”、“参数性能”、“交易历史”和“Top”
    

### 数据自动保存延迟

*   用户控制交易数据保存的时间延迟。设置600000时，每隔10分钟保存一次数据
    
*   保存数据的范围将包括：初始投资额、标记投资额、运行时间、交易币种、交易历史、转出资金、利润、自适应止损数据、其他交易数据、交易临时数据、模拟盘下的模拟仓位数据
    

### 市场规则刷新延迟

*   用户控制市场规则刷新更新的时间延迟。设置3600000时，每隔1小时刷新一次行情规则
    
*   刷新内容包括：价格精度、下单数量精度、最小市价下单量、最大市价下单量、合约面值
    

### 警报通知延迟

*   用户控制警报通知间隔。设置600000时，每隔10分钟提醒一次
    

### 模拟账户

*   选择使用模拟账户，所有策略的功能和用真实资金完全一样，所用的数据均来源于你所绑定的交易平台，适合用户自行测试不同币种的性能，模拟账户额外支持回测功能
    
*   模拟盘是通过策略主自动编写持仓信息以及绑定实盘获取的真实信息模拟的交易状态，交易过程包含手续费以及交易滑点，在调整相关环境参数后，可以达到较高的精度
    
*   模拟盘多单成交价格按照卖1执行，空单按照卖1执行，均假设市场能够完全在1档完全成交
    
*   模拟盘目前依然没有进行头寸限制，可根据不同币种头寸上限设定不同转账阈值来保障仓位保证金不超载
    

### 模拟账户资金

*   此资金将作为初始投资额
    

### 模拟行情滑点

*   在下单，即开头仓、加仓、平仓环节进行的模拟滑点，此滑点将直接体现在持仓价或者是平仓价上
    
*   当设置0.0001时候，多单开仓与空单平仓默认向上滑0.01%的币价，空单开仓与多单平仓默认向下滑0.01%的币价。例如币价10000时下多单开仓时，最后实际成交会在10001；例如币价10000时下空单开仓时，最后实际成交会在9999
    
*   此滑点不会根据下单量的大小进行调整，请用户设定时选择合适参数
    

### 止盈误差

*   在止盈平仓环节进行的模拟滑点，此滑点是在行情滑点的基础上再额外增加的滑点，此滑点将不会体现在平仓价上，滑点造成的损失会从当前资产中扣除
    
*   当设置0.0001时候，多单止盈平仓默认向下滑0.01%的币价，空单止盈平仓默认向上滑0.01%的币价。例如在头寸1000u的情况下止盈平仓时，会损耗0.1u，会立即从账户内扣除
    
*   此滑点不会根据下单量的大小进行调整，请用户设定时选择合适参数
    

### 止损误差

*   在止损平仓环节进行的模拟滑点，此滑点是在行情滑点的基础上再额外增加的滑点，此滑点将不会体现在平仓价上，滑点造成的损失会从当前资产中扣除
    
*   当设置0.0002时候，多单止盈平仓默认向下滑0.02%的币价，空单止盈平仓默认向上滑0.02%的币价。例如在头寸1000u的情况下止损平仓时，会损耗0.2u，会立即从账户内扣除
    
*   此滑点不会根据下单量的大小进行调整，请用户设定时选择合适参数
    

### 快速回测

*   本功能用于回测，此功能使用必须配合策略内置的模拟盘环境使用，使用此功能回测时，所有策略参数都可以通用
    

### 回测起始时间与回测结束时间

*   回测时间限于币种在币安交易所内上架后的时间，例如DOGE\_USDT的u本位合约最早数据可以追溯到2020年7月，那么不能选择2020年7月以前的时间作为开始时间
    
*   如果选择的时间范围找不到价格数据，那么会以最近可获取数据作为起始时间或者是结束时间
    

### 1分钟Ticker生成数量

*   根据1分钟k线生成的价格点数量，如果设置为60，意味着会根据一分钟k线的最高最低开盘收盘线性生成60个点
    
*   生成过程中会根据算法一定概率过滤最高最低点作为价格点，还原真金交易时难以在极端价成交的真实情况
    
*   设置得越高越贴近实盘，但是会指数型降低回测速度
    

### 1分钟Ticker读取数量

*   程序行情模块从生成的ticker中抽取的作为行情识别的ticker数量，如果设置为4，意味着会线性等差抽取4个ticker，如果设置为60，则默认全部抽取
    
*   设置得越高越贴近实盘，但是会指数型降低回测速度
    

### 回测结束后自动发送数据

*   在回测后将实盘交易数据发送至接收邮箱
    

马核设置
====

### 头仓补仓头寸

*   启动最小下单量：更具当前市场规则自动调整为最小的最合适的下单量，确保在相同的涨跌幅和其他马丁参数下最大化抗单水平
    
*   自定义：不考虑使用最小最优下单量，进行自定义头仓头寸以及补仓头寸
    

### 头仓头寸

*   调节头仓大小，代表了第一单的头寸大小，系统会根据设定金额以及杠杆因素开出相应的保证金，具体下单保证金数量为头仓头寸/杠杆，如果调整低了可能下单金额不足，如果调高了，会导致抗单能力指数型下降
    
*   如果该设置参数小于1，则默认为为以标记投资额为基数的比例模式
    

### 补仓头寸

*   在没有触发自适应下单的情况下，默认单次补仓头寸，下单原理同前一个类似
    
*   如果该设置参数小于1，则默认为为以标记投资额为基数的比例模式
    

### 补仓阈值

*   用来判断是否需要加仓的指标，具体用途是控制在X倍杠杆下仓位亏损不得超过补仓阈值x杠杆，否则触发补仓，补仓时优先进行普通的头仓头寸补仓，当补仓速度过慢来不及时会进行自适应补仓，一次性补完缺失数量
    

### 止盈阈值

*   用来判断是否平仓止盈，具体用途是控制在X倍杠杆下盈利超过止盈阈值x杠杆即平仓
    

### 止损模式

*   可选择不进行止损或者其他不同止损模式，具体模式如下
    

### 标记占用保证金模式止损

*   填写数字，当前填写数字代表所有币种止损标准，例如“300”，即代表参数为300的标记止损保证金对于所有币种都通用
    
*   如果该设置参数小于1，则默认为为以标记投资额为基数的比例模式
    
*   通过监控当前某一币种多单或者空单占用保证金进行止损，若当前保证金超过设定数额将会进行止损，通常而言触发时平仓亏损为标记占用保证金x补仓2x20,换言之通常都是补仓后保证金超出规定数额立马平仓
    
*   通过监控当前某一币种多单或者空单浮动盈亏进行止损，若当前浮动亏损超过设定标记占用保证金对应的补仓2亏损值将会进行止损，通常而言触发时平仓亏损为标记占用保证金x补仓2x杠杆
    
*   第二个监控是对于第一个监控的保险措施和补充，通常而言第二个监控会在波动异常剧烈的情况下提前触发，避免由于补仓不及时或者无法激活自适应补仓导致无法触发第一个监控止损而造成的巨额损失
    
*   这一种止损方式应当配合性能参数使用。具体方法请阅读手册附录2。
    

### 开单方向：此参数决定了马丁开单方向的信号来源

*   手动，由用户自行判断方向，可选择多、空、多空双开，如果多空双开，每个方向下单逻辑互不影响，资金利用率也会高一倍，但会面对任何方向高波动不回撤的风险
    
*   自适应（暂不开放）
    

### K线周期：（暂不开放）

*   当选择自适应后，选择指标分析的K线周期，目前建议1H，可自行研究
    

### 隐藏当前参数显示：（暂不开放）

*   选择是否在系统信息中显示当前参数，一般建议第一次运行时开启核对重要参数，运行正常后再根据自己需要选择是否隐藏
    

风控设置
====

### 择时开机逻辑

*   重要解释：逻辑与逻辑之间属于并行关系互相不受影响
    
*   不启动
    
*   达到运行时间开启：当机器人界面中显示的 “运行时间” 大于此设定参数时，才会进行马丁程序运行，相当于一种定时开机，在此之前依然会刷新行情以及相关信息面板
    

### 计划开始运行时间

*   设定开始进行马丁策略的运行时间，可填写小数
    
*   注意机器人判别的是面板中显示的当前时间，开机前请确认好时间设置。例如开机前机器人已经运行8小时，想在3小时后开启，当不进行重置实盘时，应当设置11，当重置实盘时，应当设置3
    

### 择时关机逻辑

*   重要解释：逻辑与逻辑之间属于并行关系互相不受影响
    
*   不启动
    
*   止盈关机：当机器人界面中显示的 “本期净回报” 大于此设定参数时，会保存相关信息并进行平仓关机；如果设置-1到1内的数，默认为比例系数，将按照该系数\*初始本金作为止盈数额参数
    
*   止损关机：当机器人界面中显示的 “本期净回报” 小于此设定参数时，会保存相关信息并进行平仓关机；如果设置-1到1内的数，默认为比例系数，将按照该系数\*初始本金作为止损数额参数
    
*   达到运行时间关闭：当机器人界面中显示的 “运行时间” 大于此设定参数时，会保存相关信息并进行平仓关机，相关操作与 “计划开始运行时间” 类似
    

### 止盈金额

*   设定用来参考关闭机器人的止盈参数
    

### 计划本期运行时间

*   设定关闭马丁策略的运行时间，可填写小数
    
*   相关操作与 “计划开始运行时间” 类似
    

### 多币防联动

*   重要解释：程序优先检测防联动再进行马丁交易，若关机时处于防联动，恢复重启后依然会进行防联动；防联动的币种将不能继续交互“恢复”功能按键
    
*   不启动
    
*   标记可用保证金：当机器人界面中显示的 “可用” 小于此设定参数时，会依据相关参数执行多币防联动的相关风控操作，将会优先保留保证金数据最大的币种继续交易，其他的币种的加仓行为将会被暂停,只允许止盈止损或者建仓行为
    
*   标记占用保证金：当机器人界面中显示的 “当前占用” 大于此设定参数时，会依据相关参数执行多币防联动的相关风控操作，将会优先保留保证金数据最大的币种继续交易，其他的币种的加仓行为将会被暂停,只允许止盈止损或者建仓行为
    
*   如果该设置参数小于1，则默认为为以标记投资额为基数的比例模式
    

### 标记可用（占用）保证金

*   设定开启多币防联动的保证金阈值
    

### 保持运行数量

*   设定保留继续交易的币种数量，当设置2时，将会保留“仓位系统”下显示最靠前的两个币种继续交易，其他币种将会暂时关闭，若出现靠前两个仓位为同一个币种，则只会交易此币种，其他币种关闭
    
*   最低支持1个币
    

### 单币/多币防异动

*   重要解释：通过防异动进行的暂停行为与用户手动暂停是一个逻辑，可以通过“恢复”按钮恢复正常的马丁循环
    
*   不启动
    
*   标记价格波动：定时标记每个币种的价格，将当前币价与最近标记的币价做对比，如果达到指定波动将暂停币种运行
    
*   标记占用保证金：当系统仓位中某一个币的保证金大于此设定参数时，会暂停币种运行，如果该设置参数小于1，则默认为为以标记投资额为基数的比例模式
    

### 标记频率

*   单位为毫秒，指定记录价格的时间间隔
    

### 波动触发阈值

*   价格波动的小数形式，0.05即为5%
    

### 自动全平逻辑

*   重要解释：逻辑与逻辑之间属于并行关系互相不受影响；每次全平后将会记录当时的盈利并以此为起点，作为新一轮盈利的起点，每次机器人开机后会以开机时计算的累积盈利为起点进行标记
    
*   标记本轮净回报：自本轮次开始盈利一旦超过此设定值后，或者亏损超过此设定值后，会进行全部平仓并继续从头仓开始重新运行马丁，标的计算的差异来源于累积盈利，如果该设置参数小于1，则默认为为以标记投资额为基数的比例模式
    
*   标记解除防联动后：当从防联动状态解除并且在进入防联动时标记的最大仓位平仓时，将会进行全部平仓并继续从头仓开始重新运行马丁，如果没有启动防联动将不会触发本功能
    
*   触发一次止损后：当触发一次止损后进行全平
    

### 保证金占比报警警告阈值

*   当仓位所有保证金占比超过此阈值时，会不断向用户发送警告，若在FMZ平台绑定了微信提示，也会在微信收到消息
    

API设置
=====

### 连接中控系统

*   本功能默认关闭，若开启需要配合圣杯指定中控系统才能使用
    
*   填入的所有信息策略主承诺不收集
    

### 中控数据发送延迟

*   控制子盘向母盘发送数据的频率，这是从子盘到母盘单方向的延迟设置
    
*   参数设置>=1，代表子盘主循环几次之后向母盘发送一次数据；如果子盘本身延迟100ms，子盘数据发送延迟为10，代表每1秒发送一次
    

### 子盘id

*   本实盘网址链接中对应的数字编号，例如某一实盘的地址为[https://www.fmz.com/m/robot/123456，那么id应该填写123456](https://www.fmz.com/m/robot/123456%EF%BC%8C%E9%82%A3%E4%B9%88id%E5%BA%94%E8%AF%A5%E5%A1%AB%E5%86%99123456)
    
*   由于只有当机器人已经创建后才会有对应网页，因此创建机器人时无法知道参数编号
    

### 实盘名称

*   为实盘起一个备注名称方便在中控系统中辨别
    

### 母盘id

*   中控机器人网址链接中对应的数字编号，例如某一实盘的地址为[https://www.fmz.com/m/robot/123456，那么id应该填写123456](https://www.fmz.com/m/robot/123456%EF%BC%8C%E9%82%A3%E4%B9%88id%E5%BA%94%E8%AF%A5%E5%A1%AB%E5%86%99123456) /upload/asset/1a686d3a81474734aa671.png
    
*   由于只有当机器人已经创建后才会有对应网页，因此在没有创建中控机器人时无法知道参数编号
    

### FMZ账户accessKey与secretKey

*   FMZ账号对应accessKey代码，获取方式为FMZ左侧功能栏-账号设置-api接口，默认情况下是权限全部开启，请确认权限为 {"privileges":" \* "}
    

连接子盘与母盘的重要说明
============

在连接子盘和母盘的时候，需要保证子盘设置好子盘和母盘的id，运行后才能达到连接的效果 关于寻找子盘或者母盘id的方法见系统参数说明中子盘id队列内的详细介绍

### 子盘机器人已存在，母盘机器人不存在

*   找到子盘id
    
*   新建母盘时，在母盘中填入子盘id并新建机器人
    
*   找到母盘id
    
*   子盘关机，在子盘中填入母盘id和子盘id并重启
    

### 子盘机器人不存在，母盘机器人已存在

*   新建子盘模拟盘，运行后立即关机
    
*   找到母盘id和子盘id
    
*   在子盘中填入母盘id和子盘id并重启
    
*   母盘关机，在母盘中填入子盘id并重启（若是本身已经绑定子盘，只需要在原id后继续填入新的子盘，用空格隔开）
    

### 子盘机器人不存在，母盘机器人不存在

*   新建子盘模拟盘，运行后立即关机
    
*   新建母盘，运行后立即关机
    
*   找到母盘id和子盘id
    
*   在子盘中填入子盘id和母盘id并重启
    
*   在母盘中填入子盘id并重启
    

图表说明
====

### 收益曲线

*   收益曲线是由无限个点构成，每一个点代表了对应时间下的累积净收益
    
*   收益曲线上的点每当触发平仓的情况下才会打印
    
*   自行划转U本位内的资金会造成本期净回报以及累积净回报的统计错误、会进而触发其他已设置的风控功能
    

### 占用及浮亏

*   两条曲线分别代表当前占用以及浮亏的变化，数值与用户收益中对应数据一致，其中浮亏数值为用户收益中的浮动的相反数
    
*   占用及浮亏上的点每隔100次循环打印一次
    

其他配置说明
======

### 实盘运行

*   启用前务必保证没有任何币种的持仓以及可以正常在app内进行合约交易，系统开机后会自动匹配交易对合约种类、下单杠杆以及允许双向交易
    
*   app内手动开仓和加仓不影响程序逻辑运行，但是手动平仓会导致程序不再继续在对应币种上开单，平仓可以通过机器人界面中的快捷平仓操作
    

策略交互说明
======

### 快速平多与快速平空

*   通过输入相关数据可以实现某一个仓位的平仓，其中命令要素包含，平仓币种，平仓数量，要素之间用空格隔开，例如btc 0.5
    
*   平仓币种：如果实盘只有一个币种，可以不填写这个要素，例如对于只有btc的盘子，可以直接输入0.5；此处可以填写大写或者小写的币种名称，可以btc，也可以BTC，也可以btc\_USDT
    
*   平仓数量：此处为保证金数量，当填写数字小于1时，默认为百分比，例如填写0.5则认为是平仓一半的btc
    

### 调整参数

*   通过输入相关数据可以实现在实盘运行时调节马核参数，其中命令目前暂时包含，头仓，补仓，间距，止盈，要素之间用空格隔开，例如 头仓 5 补仓 5 间距 0.01 止盈 0.006
    
*   此处修改参数与实盘处于停止状态下修改参数的作用一致，具体参数作用以及填写规范请参考“马核参数”设置说明
    
*   参数不需要填完整，可以最多输入四个参数修改，如果只想修改其中两个，仅需输入对应的名称与参数即可，例如仅需要修改头仓，可以直接输入 头仓 20 ，如果需要修改头仓和间距，可以输入 头仓20 间距0.02 ，后面以此类推
    

状态栏说明
=====

### 最近备份

*   程序每隔一段会自动刷新市场交易精度以及存储相关重要数据，最近备份显示的时间就是最近的一次刷新存储
    

### 币种性能

*   交易次数：在数据库中所保存的当前币种交易次数，在重置数据后会被清空
    
*   总计收益：在数据库中所保存的当前币种获利资金，由于行情获取原因，真是收益会略小于此数值，仅供参考
    
*   历史胜率：当前币种交易历史中盈利的比例，如果进行平仓关机，用户的主动平仓行为也会记录其中
    

### 参数性能

*   横轴：表示持仓时币价最大波动，单位为%
    
*   值1：在数据库中所保存的对应交易对在此范围内出现的次数
    
*   值2：在数据库中所保存的对应交易对在此范围内保证金均值
    
*   值3：在数据库中所保存的对应交易对在此范围内盈利总和
    
*   值4：在数据库中所保存的对应交易对在此范围内净盈利总和(扣除手续费)
    

### 用户收益（闪烁式播报 占用/浮动）

*   运行时间：在不重置数据情况下，会持续累积
    
*   初始：初始投资额，显示最近一次重置数据后的投资额，决定了下单数量基数
    
*   当前：当前用户权益，通过交易所api获取实时数据，与app中U本位资产估值相同，包含可下保证金以及仓位保证金和未实现盈亏，不统计U合约账户中BNB等其他资产，因此在未开启BNB燃烧情况下所有实盘中收益曲线已包含手续费消耗
    
*   浮动：当前所有仓位的浮动盈亏之和
    
*   可用：可以用来开仓的保证金
    
*   转出：通过设定阈值可以达到自动转出的功能，当达到阈值且超过2u时会自动转出，此数值显示了一共累计的转出资金，在不重置数据前转出资金会累计计算，重置数据后会将转出资金结算到累计收益中
    
*   当前占用：当前占用的保证金数量
    
*   最大占用：本期运行以来，保证金最多占用的数额，便于观察和调整下期投资额选择
    
*   相关回报：根据当前运行时间估算日化月化年化，在实盘运行24小时后开始计算月年化
    
*   累计收益：为了保证重置实盘后收益曲线不归零，将每次重置前的收益与当期收益之和设为累计收益，代表了通过机器人获得的总计利润，如果想清除此数据，需要在重置时选择清除
    
*   循环：每次开机后从0开始累加，代表程序循环次数，如果一直不刷新，代表程序已经卡死，需要重启
    
*   延迟：单位是毫秒，代表循环一次利用的时间，越快，对市场波动取读以及下单更有利但过快会早成ip超频，越慢会对对市场波动取读以及下单有负面影响，一般在一个币种情况下350-800ms比较合理
    

### 仓位数据

*   机器人根据交易当时的行情信息自动保存的数据条目，行情波动剧烈时，持仓数据可能出现显示错误，可选择“清除仓位数据”来避免错误信息计入交易历史
    
*   起始时间：头仓建立时间
    
*   持仓时间：头仓建立到目前的时间，单位为秒
    
*   止盈价格：前半部分表示当前目标止盈价格，后半部分表示币价涨跌多少个点才能止盈
    
*   补仓价格：前半部分表示最后一次补仓的价格，后半部分表示币价涨跌多少个点可能触发补仓
    
*   首次下单价：前半部分表示头仓建立时的价格，后半部分表示头仓建立后币价涨跌了多少个点
    
*   币价最大波动：在头仓建立后截至目前币价最大的振幅
    
*   持仓均价：前半部分表示当前持仓均价，后半部分表示币价涨跌多少个点会到达当前持仓成本价
    
*   保证金：前半部分表示当前仓位保证金，后半部分表示仓位占比，即当前仓位保证金/总权益
    
*   未实现盈亏：前半部分表示当前持仓的未实现盈亏，后半部分表示盈利比，即盈亏/保证金；平仓时数据库记录此数据为盈利，但由于有手续费存在，因此交易历史显示盈利要大于实际获利
    
*   平仓（按钮）：平掉当前币种当前方向的仓位并继续运行
    
*   暂停（按钮）：停止当前币种的加仓行为,只允许止盈止损或者建仓行为，当触发多币联动的状态下时，若按逻辑轮到的需要运行的币种恰好为用户主动按钮暂停的币种时，不会继续运行并且会一直卡在此币种,直到用户选择继续运行方可继续正常马丁
    
*   继续（按钮）：恢复当前币种“暂停”至“运行”，进行正常的马丁行为逻辑，当触发多币联动的状态下恢复键按钮将失灵
    

### 系统仓位（闪烁式播报 系统仓位下首条仓位的保证金/未实现盈亏信息）

*   机器人判断以及交易时真正依据的仓位信息，一般在仓位数据出现显示错误时可以暂时依据此功能栏，待系统仓位开新的单子的时候仓位数据会重新同步
    

### 交易历史

*   平仓后记录的相关数据，当重置数据后会被清空，若不重置数据，每次重启都会显示，可以根据币价最大波动和保证金来估算当前币种波动造成的抗单风险
    

### Top

*   根据交易历史中"币价最大波动"关键词进行排序后的功能栏，显示范围由开机前设置，可以在此功能栏详细查看当前参数下的重要数据
    

### 系统信息

*   显示与机器人交易系统相关信息的状态栏
    

### 系统控制

*   不平仓关机：进行数据保存与关机，保存仓位数据，运行数据以及账户数据，模拟盘下还会保存系统仓位
    
*   平仓关机：进行清仓、数据保存与关机，保存运行数据以及账户数据
    
*   全部平仓：进行清仓，清仓结束后机器人会继续将所有币种从头仓开始开单
    
*   全部暂停：停止所有币种的加仓行为,只允许止盈止损或者建仓行为，当触发多币联动的状态下时，若按逻辑轮到的需要运行的币种恰好为用户主动按钮暂停的币种时，不会继续运行并且会一直卡在此币种,直到用户选择继续运行方可继续正常马丁
    
*   全部继续：恢复所有币种“暂停”至“运行”，进行正常的马丁行为逻辑，当触发多币联动的状态下恢复键按钮将失灵
    
*   输出币种信息：按照最小下单量由大至小输出币种相关信息
    
*   输出系统仓位：按照保证金由大至小输出币种相关仓位
    
*   所有挂单：输出所有挂单情况
    
*   系统外仓位：输出所有目前设置币种以外的仓位
    
*   清除累计收益：清除所有之前累积的总收益，即累计收益，只留下最近一次重置到目前的所有利润，清空收益图，清空占用浮亏图
    
*   清除历史数据：清除所有的交易数据，数据被清除后，币种性能/参数性能/交易历史/TOP也将由于数据被清空而清空，此删除功能不可撤销
    
*   调节参数性能显示：通过调节，可以在 0-3|0-8|0-18|0-30 中挑选合适的窗口
    
*   增加交易历史显示数量 ：提高数据显示上限，每点击一次，将会增加20条数据的显示，开机时默认初始行数为20行
    
*   减少交易历史显示数量 ：降低数据显示上限，每点击一次，将会减少20条数据的显示，开机时默认初始行数为20行，最低允许设置0行
    
*   增加Top显示数量：提高数据显示上限，每点击一次，将会增加20条数据的显示，开机时默认初始行数为20行
    
*   减少Top显示数量：降低数据显示上限，每点击一次，将会减少20条数据的显示，开机时默认初始行数为20行
    

API文档
=====

相关基础知识详情请见[官方说明文档](https://www.fmz.com/api#%E6%89%A9%E5%B1%95api%E6%8E%A5%E5%8F%A3%E8%AF%A6%E8%A7%A3)

### 导入相关包

    import time
    import json
    import ssl
    ssl._create_default_https_context = ssl._create_unverified_context
    
    try:
        import md5
        import urllib2
        from urllib import urlencode
    except:
        import hashlib as md5
        import urllib.request as urllib2
        from urllib.parse import urlencode
    

### 定义api函数

    accessKey = 'YourAccessKey'
    secretKey = 'YourSecretKey'
    def api(method, *args):
        d = {
            'version': '1.0',
            'access_key': accessKey,
            'method': method,
            'args': json.dumps(list(args)),
            'nonce': int(time.time() * 1000),
            }
    
        d['sign'] = md5.md5(('%s|%s|%s|%d|%s' % (d['version'], d['method'], d['args'], d['nonce'], secretKey)).encode('utf-8')).hexdigest()
        # 注意： urllib2.urlopen 函数，超时问题，可以设置超时时间，urllib2.urlopen('https://www.fmz.com/api/v1', urlencode(d).encode('utf-8'), timeout=10) 设置超时 10秒
        return json.loads(urllib2.urlopen('https://www.fmz.com/api/v1', urlencode(d).encode('utf-8')).read().decode('utf-8'))
    

### 利用CommandRobot(robotId, cmd)向实盘发送命令

robotID为控制目标(子盘)的实盘id，cmd为指令，指令格式如下

    #连接测试
    api('CommandRobot',robotID,'母盘调用?{"msg":"连接测试"}')
    #不改参重启
    api('CommandRobot',robotID,'母盘调用?{"msg":"不改参重启"}')
    #不平仓关机
    api('CommandRobot',robotID,'母盘调用?{"msg":"不平仓关机"}')
    #平仓关机
    api('CommandRobot',robotID,'母盘调用?{"msg":"平仓关机"}')
    #全部平仓
    api('CommandRobot',robotID,'母盘调用?{"msg":"全部平仓"}')
    #单一仓位平仓,以BTC_USDT平多举例,平多为long，平空为short
    api('CommandRobot',robotID,'母盘调用?{"msg":"币种平仓","ex":"BTC_USDT","way":"long"}')
    #单一仓位暂停,以BTC_USDT平多举例
    api('CommandRobot',robotID,'母盘调用?{"msg":"币种暂停","ex":"BTC_USDT"}')
    #单一仓位继续,以BTC_USDT平多举例
    api('CommandRobot',robotID,'母盘调用?{"币种继续","ex":"BTC_USDT"}')
    #快捷命令：平仓某一币种某一比例或者具体保证金的仓位
    api('CommandRobot',robotID,'平多:OGN 20')
    #快捷命令：调整实盘参数
    api('CommandRobot',robotID,'调整:头仓 100 补仓 100 间距 0.05 止盈 0.1')
    

### 利用GetCommand()接收子盘信息

由子盘发送至母盘的数据结构为 '子盘数据?{'name':name,'this\_bot\_id':this\_bot\_id,'用户收益':\[xxxx\],'仓位数据':\[xxxx\]}',后期根据需求更新其他内容到字典中

    cmd = GetCommand() 
    if len(cmd)>0:#当获取一次信息
        if cmd.split('?')[0]=='子盘数据':#收到来自子盘的信息，开始解析，解析内容为[1]位置上的信息
            getmsg=eval(cmd.split('?')[1])
    

附录1:相关公式：
=========

*   单币种最小投资额计算：app内20倍杠杆下最小有效下单保证金x(1/头仓下单)/5
    
*   头仓保证金计算：初始投资额x头仓下单比例
    
*   头仓下单数量：初始投资额x0.01x20/(交易对数量x币价)
    
*   合约交易头寸：下单保证金数量x20
    
*   手续费用：合约交易头寸x交易费率
    
*   当前：可用+仓位保证金+仓位未实现盈亏
    
*   本期回报：当前-初始
    
*   累计收益：重置前总收益+本期回报
    

附录2:标记占用保证金模式止损使用方式样例：
======================

### 样例实盘参数：

*   SAND\_USDT ALICE\_USDT VET\_USDT 初始资金 2300.04 划转阈值 2300 头仓 0.0001 补仓1 0.0001 补仓2 0.01 止盈 0.004 开单方式 1 K线周期 0 主动延迟 0 保证金警告 0.9
    

### 信息栏中的参数性能信息：

![](https://storage.googleapis.com/papyrus_images/3bd1774f4aae7e9b48be911708f99a2a09d143f7c6d8378b65717d285de15ed4.png)

### 计算过程:

*   通过对于ALICE此套参数性能的观察，发现在0-1至6-7的范围中总收益在50u，若对于波动7-8档中的均值保证金100进行止损，损失为100x0.01x20x2=10u。假定本币种长期保证金在不同波动下的分布依然如此，那么对于这125小时跑出来的数据，可以确定长期收益为10u每125h。
    
*   综上所述，对于 ALICE\_USDT 头仓 0.0001 补仓1 0.0001 补仓2 0.01 止盈 0.004 这一套参数下，设定标记止损位100u，理论可以达到稳定收益的效果
    
*   本例中ALICE仅有434次交易，算不上足够大的样本，不构成投资参考意见，并且部分币种存在严重控盘情况，建议用户自行测试
    

附录3:圣杯马丁不同玩法归纳（计算背景为：只跑1个币种，20倍杠杆，头仓头寸5U，一直连续补仓到币安山寨币上限25000u头寸）
================================================================

经典玩法
----

*   小间距参数：抗单4-5个点不回调0.8个点满仓，日化30-50
    
*   [中等间距参数](https://www.fmz.com/robot/89ae3e7f9afc03eac089b8a410e00977)：抗单9-11个点不回调1个点满仓，日化2-5
    
*   [大间距参数](https://www.fmz.com/robot/fb6d827055d480dc045f5b822e26535a)：抗单32-35个点不回调4个点满仓，日化1-2左右，跟币种波动有极大关系
    
*   [超大间距参数](https://www.fmz.com/robot/bf8badd7f86a69d5ea87a47fb3f31679)：抗单55-70个点不回调6个点满仓，日化1左右，跟币种波动有极大关系
    
*   止损类参数：收益平均5u/天，初始头寸以及止损已被限定，整体收益取决于选定币种数量，收益率取决于本金以及收益。在合理搭配下可以达到日化2-10
    

派生玩法
----

*   [超大间距-不死鸟](https://www.fmz.com/robot/341784) 1000u起跑，20币起步，日化1-10%不等，不含止损低风险
    
*   [超大间距-泰坦](https://www.fmz.com/robot/394516) 1000u起跑，20币起步，日化0.5-5%不等，不含止损超低风险
    
*   [中间距配合止损-改良阿瑞斯](https://www.fmz.com/robot/401496) 500u起跑，日化2-10%，含止损中等风险
    

附录5:圣杯马丁相关公理
============

相同参数下当币种较多的情况下，整体收益曲线形成共同趋势

![上述两图均为在相同时间段，相同止损参数下跑的两个不同实盘，第一个实盘共有50个币，后一个实盘共有10个币且不完全包含于前50币盘中的币种](https://storage.googleapis.com/papyrus_images/69b5e28e5cfd1e146a465be77f0b8994d5d95499d926f9d3a867cdf24656ccb4.png)

上述两图均为在相同时间段，相同止损参数下跑的两个不同实盘，第一个实盘共有50个币，后一个实盘共有10个币且不完全包含于前50币盘中的币种

固定补仓2及止盈，通过等比例放缩头仓及补仓1，可以在不改变抗单上限以及止盈效率的前提下利用更小资金或者去做更多币种

固定本金、交易币对、补仓2及止盈，通过等比例放大头仓、补仓1及止损标记保证金，可以等比例增加收益率

附录6:模拟盘与真金盘差距说明
===============

趋势相同，振幅略有差异

![此图为止损1在8H内模拟与真金的收益曲线对比图](https://storage.googleapis.com/papyrus_images/7aa993b091fce6f0ca7426a42007c9c4e4ff7ba641558d2d482520befaed47eb.png)

此图为止损1在8H内模拟与真金的收益曲线对比图

真实市场市价交易滑点差异

模拟盘没有对于订单深度计算获取，并没有考虑当前订单会导致的价格波动。当下单量较大时，真金盘多单会拉升价格导致成本提高，真金盘空单会拉低价格导致成本提高；当交易越频繁，加仓间距约小时，差距会越大

强行平仓/减仓差异

当账户总体保证金达到一个较高的比例且当前权益接近于1-5%时，真金盘账户会收到币安的高风险警报并强制平一部分仓位

---

*Originally published on [Benson](https://paragraph.com/@bensonxu/v3)*
