[TOC] 学习完这篇教程你将了解FMZ发明者量化交易平台的架构和功能,能够创建策略并实际运行实盘。关于具体策略编写API将在后续教程里介绍。初级教程:https://www.fmz.com/bbs-topic/4158 进阶教程:https://www.fmz.com/bbs-topic/4183
FMZ发明者量化平台(原BotVS)是专业的量化社区,创建于2014年。在这里你可以学习、编写、分享、买卖量化策略,在线回测和使用模拟盘模拟交易,运行、公开、围观实盘。支持商品期货与易盛外盘期货, 也支持几乎所有的常用的数字货币交易所。FMZ适用于量化交易初学者,即使无基础也可以快速入门,平台功能强大灵活,也可以能满足进阶需要。欢迎加入首页telegran群。
对于数字货币现货交易所,目前几乎支持所有,如果有其它需要的交易所,提出后也会很快支持;数字货币期货交易支持有:OKEX、Huobi、GateIO、BitMEX、Deribit、BFX;支持的杠杆交易所有:OKEX、Huobi、Binance、FCoin、ZB、Bibox;支持的永续合约交易所有:BitMEX、Deribit、GateIO、OKEX、BFX、Bibox;支持Derbit数字货币期权交易;模拟交易所:交易所的测试网如BitMEX以及FMZ官方现货模拟交易平台wex.app。
FMZ量化平台支持使用Javascript、Python、C++等完整的高级语言,也支持可视化语言、麦语言(兼容文华财经)和Pine语言(兼容Trad ingView)实现策略。
平台按小时计费, 每个实盘机器人, 每小时 0.05 美元, 不足一小时按一小时计费,暂停后重启不重复收费, FMZ单个实盘可以操作多个交易所、多个账户、多个交易对。
运行实盘的服务器需要自己准备或者租用FMZ平台准备的服务器(价格较贵)。目前主流的海外服务器大约30元/月。只交易商品期货可以租用国内服务器。
注意:FMZ数字货币部分已经分离,国内网站www.fmz.cn专注与商品期货业务,可使用人民币充值,国外网站专只能做数字货币业务,使用美元或者USDT充值。
FMZ的架构特殊,不像其它交易软件需要下载客户端,基本上只需要在FMZ网站上进行管理,因此具有很多优势。FMZ网站主要功能是编写策略,管理实盘。而实盘具体执行则在用户自己在服务器或电脑的托管者上,托管者负责和FMZ网站通信来传递日志、直接运行机器人访问交易所获取行情和交易。如果FMZ网站出现短暂问题,也不会影响策略实盘的执行。用户可以将托管者部署到任何地方来提高交易速度,通过FMZ网站随时随地的管理实盘、查看日志、修改参数。更多介绍参考:https://www.fmz.com/digest-topic/7542
API-KEY是用户重要隐私信息,FMZ并不保存用户的KEY,服务器保存浏览器根据用户密码加密过的数据,实盘创建时再发往托管者,托管者解密后使用,由于FMZ不保存用户密码明文,所以用户的API-KEY即使是FMZ这也无法获取。用户需要保护好API-KEY明文、FMZ网站密码以及托管者所在服务器。FMZ量化平台运行4年多,经过数万名用户使用,并未发生过任何安全问题。
策略源码是保存在FMZ服务器上的,如果你想本地执行策略,可将你的代码保存成Python文件,直接在策略中引用执行就行,具体方法见置顶初级教程最后的FAQ。这样你的代码就完全本地化了。
如果你想出租策略而不像用户看到源码,需要用js完成策略,会编译成机器码由对方托管者执行,反编译的难度很高。而Python语言本身没有加密机制,FMZ最近升级了出售Python策略源码加密机制,但也无法彻底解决策略泄露的风险。如果必须用Python,可以帮客户租托管者运行策略。
做重要的是要敢于开始学习,一步步来,所有步骤一定要亲自上手。即使初学看起来非常困难,但当你完成第一个策略后,会发现一切都如此简单。如果你有一定的编程基础,一周内可以入门写出策略,如果不懂编程知识,需要额外一周学习最基础的编程知识。如果 原来使用文华财经,熟悉麦语言,则只需要了解平台使用就行。
如果遇到问题,可以随时到论坛发帖提问 https://www.fmz.com/bbs ,或者发工单 https://www.fmz.com/m/tickets ,或者在QQ群或者微信群@管理员,一般都会很快解答。注意先尝试搜索文档或论坛解决,提问时问题需要提供充足的信息。
从头开始运行一个实盘的步骤如下:
如果前三个步骤已经做过了,只需要第四步就行了,接下来就以一个微信价格预警实盘为例,从头介绍如何运行一个实盘,更多关于平台详细功能将在下一章介绍。
首先需要登陆到相应的交易所网站申请API-KEY,KEY分为两个Access Key
与Secret Key
,Access Key可能有其他名字,但只要记住一个是Secret Key
,另外一个就是Access Key
。API-KEY是加密数据和验证身份使用的,类似于用户名密码,非常重要不能泄露。不同的交易所申请位置不同,只要寻找“API”就能找到。注意如果交易所同时支持现货和期货,需要分别添加,如OKEX和OKEX期货,Huobi和Huobi期货,即使它们的API-KEY一样。 这里以FMZ官方模拟交易所Wex.app为例。
网址为 https://wex.app (注意由于网络原因,wex模拟交易所有时候也要海外托管者才能访问),需要邮箱注册账户,注册完成后在Wex模拟交易所要把“我的钱包”中的虚拟资产转到“币币账户”上,初始是没有交易资产的。在网站右上角用户头像处点击API管理。点击“创建”,输入邮箱验证码即可创建。其中可以看到IP限制和权限管理。IP限制可以只让此IP地址下的程序访问账户,更加安全。权限不要忘记添加交易权限,否则无法下单。
这次演示得到的API-KEY,Access Key:9af1b5bfe833b2ee0d54bb95325579d5,Secret Key:2043b8629620d4d69590803c55fa92bc,只能看到一次,别忘了记录下来保存好。
进入添加交易所界面 https://www.fmz.com/m/platforms ,点击“添加交易所”按钮。
首先交易所类别选择数字货币,交易所名称选择WexApp(由于交易所很多,可以直接输入文字刷选),然后把刚刚申请的KEY复制进去,注意一个交易所可以多次添加,使用不同的标签区分。添加交易所需要输入FMZ网站密码,在这里浏览器对输入的KEY进行加密后上传。
添加完成后,就可以在这个页面看到已添加的交易所,也可以修改已添加的交易所。
如果想进行商品期货CTP模拟交易,需要添加simnow,具体步骤参考:https://www.fmz.com/bbs-topic/325
在策略页面:https://www.fmz.com/m/strategies ,点击“新建策略”即可。为了演示我们直接复制一个策略即可,在策略广场的教学策略中可以找到“设定比特币价格并微信推送(教学)”的公开策略,地址 https://www.fmz.com/strategy/125482 ,点击复制策略。
下图为复制后的策略,其中策略名称中有“|”分割中英文,如果你想发布一个英文名称的策略也可以用这个方法。参数是全局变量,在策略代码中可以直接引用。策略代码很简单,在死循环中不断使用GetTicker()获取最新价格,当达到推送标准后,就向微信推送一条消息(需要在FMZ网站绑定微信账户)。点击“创建策略”,就可以在自己的策略库看到这个策略了。
如果修改了策略,只需要保存策略再重启运行该策略的实盘即可生效。
托管者页面:https://www.fmz.com/m/nodes 。前面说过,用户的实盘不是由FMZ平台运行,而是由用户自己运行,所以需要一个执行策略的程序,就是托管者。托管者可以运行在Linux\Mac\Windows上。注意由于几乎所有的数字货币交易所在国内都无法使用,托管者需要运行在海外服务器上,用户可以自己选择服务器提供商购买Linux服务器(系统一般可选centos),服务器可选Amazon、谷歌、digitalOcean等。如果没有双币信用卡也可以选择支持支付宝的服务商。服务器配置一般选最低即可,价格约为1元/天。
购买服务器看起来很困难,但是是进行数字货币量化的必须步骤,这里是一个详细的购买演示。 如果觉得海外公司麻烦,也可以选择阿里云香港服务器。如果也觉得麻烦,可以从FMZ平台直接按时一键租用,FMZ会从阿里云等服务器厂商直接租用新的服务器并自动部署用户的托管者,最为简单但价格相对较贵。具体的Linux服务器部署和升级的详细步骤参考:https://www.fmz.com/bbs-topic/2848
对于商品期货的用户,可以直接按月租用上海或杭州的阿里云服务器,价格40元/月。价格已经压缩到最低(自己租用基本也是这个价格),可以省去自己租用服务器和管理的麻烦,托管者也可以一键升级,非常推荐。
本次演示由于是模拟交易所,可以直接部署到自己电脑上(商品期货也可以使用自己的电脑)。选择64位界面版,解压后右键以管理员权限运行robot程序。把网站上的地址(每个用户都不相同,登陆后在托管者页面查看)和FMZ网站密码信息填写到程序中,点运行,如出现2019/08/09 12:03:30 Login OK, SID: 90706, PID: 31376
之类的字样说明运行成功。在托管在目录可以看到logs文件夹,实盘日志将保存在那里。在托管者管理界面可以看到刚才部署的托管者。
如果实盘程序不是特别吃性能,一个托管者可以运行多个实盘(服务器最低配置运行十几个实盘也没问题),注意一个服务器也可以部署多个托管者,但一般不需要。托管者和FMZ网站通信来返回实盘状态以及控制实盘,由于海外服务器和国内通信问题,偶尔会出现托管者离线提示,但并不影响实盘实际运行。如果一个托管者彻底离线,将无法操作由此托管者运行的实盘,则需要将此托管者删除。如果添加新功能旧托管者不支持,会发出公告,用户可以根据自己需要选择更新。
以上工作做完后,才可以实际运行一个实盘。在实盘页面 https://www.fmz.com/m/robots 点击“创建实盘”,出现以下设置:
创建实盘时需要设置指定的策略,指定的运行托管者,操作的交易所和交易对,默认K线周期,策略参数等。一个实盘可以添加多个交易所交易对,也可以控制同一个交易所的多个交易对,如果下拉中没有所需要的交易对,可以点击自定义手动输入。除了运行的策略外,其它参数都可以在某个具体的实盘的页面修改。
创建实盘后,可以在实盘页面找到,点击可进入正在运行的实盘。
至此,我们就创建了一个实盘,是不是很简单。
首先是登陆后的控制中心主页面,其中侧边和顶端是导航栏目,下面将一一介绍。
策略编写可以在FMZ网站进行,也可以通过远程编写。策略参数将放在下个教程讲解。
在操作项的下拉选项中可以看到“公开”选项,有内部分享和公开分享两者方式。内部分享流程如下:
最后生成复制链接,其他人打开此链接即可,输入复制码,就可以获得这个策略的源码和参数了。
复制地址: https://www.fmz.com/m/t/161415
复制码: e3d2e2edd3060bd6f477c1106cf182f5
选择公开分享,你的策略就会出现在策略广场中,所有人都能看到。
选择“售卖”有三种方式,内部出售、软件注册、公开出售,和公开策略的不同是,其他人通过复制地址将无法获取源码,只能运行实盘。
内部出售是最常用的方式,如果你有策略需要单独分享给他人(不一定收费)可以选择此方式,填写好有效期和并发数量。公开出售的策略出现在策略广场的收费策略中,需要经过审核并且公开一段时间的实盘。
交易终端是一个网页版的交易页面,在这里可以手动操作自己添加的所有交易所。
#### 账户管理与充值
左侧导航进入充值页面,具体说明如下:
点击网站右上角账户头像进入账号设置,在这个页面管理自己的FMZ账户,这里简要介绍。