3
关注
1228
关注者

FMZ量化平台使用入门(必看)

创建于: 2019-08-09 14:54:48, 更新于: 2023-07-16 23:11:11
comments   52
hits   73618

[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充值。

面向用户


  • 1.程序化交易新手,但有交易经验和策略思想,能够学习简单的编程并用于实盘。FMZ量化对接口的统一封装和范例将大大节约你的学习时间。
  • 2.职业或半职业的策略研究员,能够熟练的编写策略,根据用户要求定制相关策略收费。
  • 3.有成熟策略需要出售或需找资金,可在FMZ上展示实盘,并出租策略。
  • 4.有其他商品期货程序化平台使用经验,如文华财经,开拓者等,能够编写麦语言策略,FMZ平台很适合这些用户入门,提供更强大的功能。
  • 5.有稳定的运行的策略和编程经验,需要FMZ提供的网页化管理和图表功能,更好的运行自己的实盘。
  • 6.有编程和交易经验,需要看其它公开策略、在社区交流来寻找自己的策略思路。
  • 7.完全无编程经验,也不愿意学习,想购买成熟策略。(不太推荐,至少需要掌握相关知识)

平台架构


FMZ的架构特殊,不像其它交易软件需要下载客户端,基本上只需要在FMZ网站上进行管理,因此具有很多优势。FMZ网站主要功能是编写策略,管理实盘。而实盘具体执行则在用户自己在服务器或电脑的托管者上,托管者负责和FMZ网站通信来传递日志、直接运行机器人访问交易所获取行情和交易。如果FMZ网站出现短暂问题,也不会影响策略实盘的执行。用户可以将托管者部署到任何地方来提高交易速度,通过FMZ网站随时随地的管理实盘、查看日志、修改参数。更多介绍参考:https://www.fmz.com/digest-topic/7542

API-KEY和策略源码安全性


API-KEY是用户重要隐私信息,FMZ并不保存用户的KEY,服务器保存浏览器根据用户密码加密过的数据,实盘创建时再发往托管者,托管者解密后使用,由于FMZ不保存用户密码明文,所以用户的API-KEY即使是FMZ这也无法获取。用户需要保护好API-KEY明文、FMZ网站密码以及托管者所在服务器。FMZ量化平台运行4年多,经过数万名用户使用,并未发生过任何安全问题。

策略源码是保存在FMZ服务器上的,如果你想本地执行策略,可将你的代码保存成Python文件,直接在策略中引用执行就行,具体方法见置顶初级教程最后的FAQ。这样你的代码就完全本地化了。

如果你想出租策略而不像用户看到源码,需要用js完成策略,会编译成机器码由对方托管者执行,反编译的难度很高。而Python语言本身没有加密机制,FMZ最近升级了出售Python策略源码加密机制,但也无法彻底解决策略泄露的风险。如果必须用Python,可以帮客户租托管者运行策略。

新手入门步骤


  1. 学习一门编程语言,推荐Javascript和Python,只需要简单会使用即可。如果只是想快速实现一些相对的趋势策略,也可以试试麦语言和Pine语言。
  2. 熟悉FMZ平台使用,部署自己的托管者,熟悉策略、实盘、托管者、网站之间的关系。
  3. 浏览API文档,了解接口和功能。
  4. 学习策略广场的教学策略,并自己上手写一下简单功能的策略,如价格推送,冰山委托之类。
  5. 构思自己的策略,熟悉具体API接口和常见的错误信息,学会正确提问和搜索相关帖子。
  6. 模拟盘和实盘运行策略,在实战中发现更多问题。

做重要的是要敢于开始学习,一步步来,所有步骤一定要亲自上手。即使初学看起来非常困难,但当你完成第一个策略后,会发现一切都如此简单。如果你有一定的编程基础,一周内可以入门写出策略,如果不懂编程知识,需要额外一周学习最基础的编程知识。如果 原来使用文华财经,熟悉麦语言,则只需要了解平台使用就行。

如果遇到问题,可以随时到论坛发帖提问 https://www.fmz.com/bbs ,或者发工单 https://www.fmz.com/m/tickets ,或者在QQ群或者微信群@管理员,一般都会很快解答。注意先尝试搜索文档或论坛解决,提问时问题需要提供充足的信息。

学习资源推荐


30分钟运行一个实盘

从头开始运行一个实盘的步骤如下:

  1. 添加交易所API-KEY到FMZ网站。
  2. 创建需要运行的策略。
  3. 部署运行实盘的托管者。
  4. 创建实盘。

如果前三个步骤已经做过了,只需要第四步就行了,接下来就以一个微信价格预警实盘为例,从头介绍如何运行一个实盘,更多关于平台详细功能将在下一章介绍。

1.添加交易所


首先需要登陆到相应的交易所网站申请API-KEY,KEY分为两个Access KeySecret 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地址下的程序访问账户,更加安全。权限不要忘记添加交易权限,否则无法下单。 FMZ量化平台使用入门(必看)

这次演示得到的API-KEY,Access Key:9af1b5bfe833b2ee0d54bb95325579d5,Secret Key:2043b8629620d4d69590803c55fa92bc,只能看到一次,别忘了记录下来保存好。 FMZ量化平台使用入门(必看)

进入添加交易所界面 https://www.fmz.com/m/platforms ,点击“添加交易所”按钮。 FMZ量化平台使用入门(必看)

首先交易所类别选择数字货币,交易所名称选择WexApp(由于交易所很多,可以直接输入文字刷选),然后把刚刚申请的KEY复制进去,注意一个交易所可以多次添加,使用不同的标签区分。添加交易所需要输入FMZ网站密码,在这里浏览器对输入的KEY进行加密后上传。 FMZ量化平台使用入门(必看)

添加完成后,就可以在这个页面看到已添加的交易所,也可以修改已添加的交易所。 FMZ量化平台使用入门(必看)

如果想进行商品期货CTP模拟交易,需要添加simnow,具体步骤参考:https://www.fmz.com/bbs-topic/325

2.创建与修改策略


在策略页面:https://www.fmz.com/m/strategies ,点击“新建策略”即可。为了演示我们直接复制一个策略即可,在策略广场的教学策略中可以找到“设定比特币价格并微信推送(教学)”的公开策略,地址 https://www.fmz.com/strategy/125482 ,点击复制策略。

下图为复制后的策略,其中策略名称中有“|”分割中英文,如果你想发布一个英文名称的策略也可以用这个方法。参数是全局变量,在策略代码中可以直接引用。策略代码很简单,在死循环中不断使用GetTicker()获取最新价格,当达到推送标准后,就向微信推送一条消息(需要在FMZ网站绑定微信账户)。点击“创建策略”,就可以在自己的策略库看到这个策略了。 FMZ量化平台使用入门(必看)

如果修改了策略,只需要保存策略再重启运行该策略的实盘即可生效。

3.部署托管者


托管者页面: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元/月。价格已经压缩到最低(自己租用基本也是这个价格),可以省去自己租用服务器和管理的麻烦,托管者也可以一键升级,非常推荐。

FMZ量化平台使用入门(必看)

本次演示由于是模拟交易所,可以直接部署到自己电脑上(商品期货也可以使用自己的电脑)。选择64位界面版,解压后右键以管理员权限运行robot程序。把网站上的地址(每个用户都不相同,登陆后在托管者页面查看)和FMZ网站密码信息填写到程序中,点运行,如出现2019/08/09 12:03:30 Login OK, SID: 90706, PID: 31376之类的字样说明运行成功。在托管在目录可以看到logs文件夹,实盘日志将保存在那里。在托管者管理界面可以看到刚才部署的托管者。 FMZ量化平台使用入门(必看)

如果实盘程序不是特别吃性能,一个托管者可以运行多个实盘(服务器最低配置运行十几个实盘也没问题),注意一个服务器也可以部署多个托管者,但一般不需要。托管者和FMZ网站通信来返回实盘状态以及控制实盘,由于海外服务器和国内通信问题,偶尔会出现托管者离线提示,但并不影响实盘实际运行。如果一个托管者彻底离线,将无法操作由此托管者运行的实盘,则需要将此托管者删除。如果添加新功能旧托管者不支持,会发出公告,用户可以根据自己需要选择更新。

4.创建和管理实盘


以上工作做完后,才可以实际运行一个实盘。在实盘页面 https://www.fmz.com/m/robots 点击“创建实盘”,出现以下设置: FMZ量化平台使用入门(必看)

创建实盘时需要设置指定的策略,指定的运行托管者,操作的交易所和交易对,默认K线周期,策略参数等。一个实盘可以添加多个交易所交易对,也可以控制同一个交易所的多个交易对,如果下拉中没有所需要的交易对,可以点击自定义手动输入。除了运行的策略外,其它参数都可以在某个具体的实盘的页面修改。

创建实盘后,可以在实盘页面找到,点击可进入正在运行的实盘。 FMZ量化平台使用入门(必看)

至此,我们就创建了一个实盘,是不是很简单。

具体平台功能详解

首先是登陆后的控制中心主页面,其中侧边和顶端是导航栏目,下面将一一介绍。 FMZ量化平台使用入门(必看)

  • 控制中心:用户的操作界面。https://www.fmz.com/m/dashboard
  • 策略:策略广场,用户公开和出售的策略在这里,可以点击相应的标签筛选某一类的策略。https://www.fmz.com/square
  • 围观:用户公开运行的实盘,可以进行围观评论。https://www.fmz.com/live
  • 文库:FMZ官方出品的一些精品文章。https://www.fmz.com/digest
  • 社区:用户发帖提问交流平台。https://www.fmz.com/bbs
  • 众包:发布需求和代写策略,一切由用户自行联系,FMZ官方不担保。https://www.fmz.com/markets
  • API文档:FMZ编写策略所需要的API介绍,关于API有问题可以在这里搜索。https://www.fmz.com/api
  • 策略库:所有的策略位置.
  • 交易所:添加的所有交易所
  • 托管者:添加的所有托管者
  • 实盘:运行过的所有实盘,包括已停止的
  • 调试工具:方便的调试部分代码,不用创建实盘
  • 交易终端:简单的手动交易界面
  • 研究环境:支持用jupyter notebook进行策略研究.
  • 账单:消费和充值记录
  • 消息:各种类型的消息通知
  • 工单:有问题除了发论坛,也可以直接发工单
  • 数据探索:平台保存的K线和实盘级数据,方便浏览和保存
  • 分析工具:对行情进行简易的计算分析

实盘管理


FMZ量化平台使用入门(必看)

  • 1.实盘的名字,点击可进入此实盘管理页面。
  • 2.实盘机器人的分组名称,方便管理大量实盘。
  • 3.此实盘机器人运行的策略名称。
  • 4.实盘状态,由正在运行、停止、完成、出现错误四种状态。
  • 5.实盘盈利,具体不一定代表了盈利数据,使用户自己输出,可以代表任何数据.
  • 6.公开自己的实盘,可以在围观中让其它用户看到。
  • 7.监控实盘,实盘停止后自动推送消息。
  • 8.停止或重启实盘机器人。
  • 9.当前账户余额和实盘可运行的时间。
  • 10.对策略的分组进行管理

策略管理


FMZ量化平台使用入门(必看)

  • 1.策略名称。
  • 3.策略操作选项,如公开、租用、出售等。
  • 4.策略名称。
  • 5.添加和管理新的分组,可以把不同类型的策略分组,方便管理。

策略编写界面说明


策略编写可以在FMZ网站进行,也可以通过远程编写。策略参数将放在下个教程讲解。 FMZ量化平台使用入门(必看)

  • 1.点此进入回测,关于回测的具体说明将放在策略编写初级教程里。
  • 2.策略使用的语言选择,策略创建后不可切换语言。
  • 3.策略名称。
  • 4.笔记是编写策略的记录,仅自己可见;描述是策略说明,策略公开后其他人可以在策略页面将看到;手册是策略的使用说明,购买或复制策略的可以看到。
  • 5.策略类型,分为通用策略和模板,关于模板可参考API文档: https://www.fmz.com/api#%E6%A8%A1%E6%9D%BF%E7%B1%BB%E5%BA%93
  • 6.策略分组。
  • 7.保存,可在编辑状态使用Ctrl+S的快捷键。
  • 7.保存回测设置:会把回测参数保存在代码前面,重新打开策略将保留回测设置.
  • 7.下载源码:将代码下载到本地。
  • 7.导入导出策略:顾名思义,并且策略的参数和各种设置一并保留。
  • 7.皮肤:不同的代码背景和着色风格。
  • 7.代码美化:自动整理代码。
  • 7.开启VIM模式,Vim是常用的无界面编辑器,功能强大。全屏 + VIM = 专注的大神。
  • 8.远程编辑,包含常用的代码编辑器插件,可在本地编写策略,自动同步到FMZ。具体说明:https://www.fmz.com/api#%E8%BF%9C%E7%A8%8B%E7%BC%96%E8%BE%91
  • 9.选择要引用的模板,要先在策略广场把模板复制下来。
  • 10.策略参数,参数将在下篇教程详细介绍。

分享或出售自己的策略


FMZ量化平台使用入门(必看)

在操作项的下拉选项中可以看到“公开”选项,有内部分享和公开分享两者方式。内部分享流程如下: FMZ量化平台使用入门(必看)

最后生成复制链接,其他人打开此链接即可,输入复制码,就可以获得这个策略的源码和参数了。

复制地址: https://www.fmz.com/m/t/161415
复制码: e3d2e2edd3060bd6f477c1106cf182f5

选择公开分享,你的策略就会出现在策略广场中,所有人都能看到。

选择“售卖”有三种方式,内部出售、软件注册、公开出售,和公开策略的不同是,其他人通过复制地址将无法获取源码,只能运行实盘。

内部出售是最常用的方式,如果你有策略需要单独分享给他人(不一定收费)可以选择此方式,填写好有效期和并发数量。公开出售的策略出现在策略广场的收费策略中,需要经过审核并且公开一段时间的实盘。

交易终端


交易终端是一个网页版的交易页面,在这里可以手动操作自己添加的所有交易所。 FMZ量化平台使用入门(必看)

  • 1.执行指令的托管者,账户信息、下单之类的都要发到该托管者上执行。
  • 2.选择交易所和交易对。
  • 3.部分行情是由FMZ网站推送的,此时提示高速通道。对于没推送的数据,可以选择手动刷新或定时刷新。
  • 4.行情K线。
  • 5.账户信息,定时或手动刷新。
  • 6.手动下单页面。

#### 账户管理与充值


左侧导航进入充值页面,具体说明如下: FMZ量化平台使用入门(必看)

点击网站右上角账户头像进入账号设置,在这个页面管理自己的FMZ账户,这里简要介绍。

  • 消息中心:各种消息汇总,包括论坛回帖、工单信息等消息。
  • 谷歌验证:最好开启谷歌二次验证,提高安全性。
  • 额度预警:当账户可用余额小于此值时, 您将会收到邮件与微信通知, 设置为0禁止用此功能, 没有充值或者更改此设置的情况下, 24小时内只通知一次
  • 推送设置:这里可以绑定微信,Telegram,邮箱等,用于接收实盘的推送消息。
  • API接口:FMZ也有自己的API,基本上实盘的所有操作都可以通过API完成,提供了丰富的扩展性。
  • 子账户组:可以创建只有部分权限的子账户功能,可用于策略修改共享账户等作用。
  • 推广返佣:推广FMZ平台,可以获得注册用户充值的返佣,推广链接的形式如下:https://www.fmz.com/sign-up/1247886 。具体说明: https://www.fmz.com/bbs-topic/3828
更多内容
全部留言
avatar of 预算
预算
太乱了,从简到易的策略教程都没有,新手一脸懵,全是介绍函数方法的,连第一步干嘛都是懵的
2023-12-15 13:31:42
avatar of king_wz
king_wz
平台的历史数据好像和币安平台历史数据也差异
2021-12-07 23:24:09
avatar of king_wz
king_wz
用python 画不出线啊 js可以 {TA.MA(records, 14) 是有什么bug吗还是不支持
2021-12-07 16:29:51
avatar of changyuyun
changyuyun
我是coder,特别希望搞清楚这个平台的原理。感觉直接写策略有点雨里雾里。可以描述一下原理吗?
2021-12-07 09:58:25
avatar of king_wz
king_wz
以前ccxt写的能直接拿过来使用,还是需要改成fmz的api
2021-11-30 14:19:34
avatar of king_wz
king_wz
在这里的策略python直接用fmz的api就可以吗 能使用其他的开源库?
2021-11-30 13:50:14
avatar of 朱永强
朱永强
小白没人教咋用
2021-11-23 09:25:49
avatar of clubk818
clubk818
今天刚接触这个平台,发现这个平台太牛了,希望能一直保持下去
2021-11-17 23:33:35
avatar of hatepop
hatepop
怎么联系客服呢
2021-11-09 21:04:13
avatar of 芒果量化
芒果量化
实盘更换托管者必须要平仓吗
2021-10-21 15:03:16
avatar of yxiao8911
yxiao8911
OK平台永续合约可以接API吗
2021-10-09 16:17:23
avatar of LJG658658
LJG658658
有群吗
2021-09-18 14:12:32
avatar of webkill
webkill
2021-08-29 13:56:53
avatar of webkill
webkill
实盘显示有收益 但是okex账户资金没有变化是怎么回事?
2021-08-29 13:56:22
avatar of 程序猿猴
程序猿猴
在【交易终端】中,调用wex.app 交易所模拟盘不成功,提示: GetAccount: invalid nonce GetOrders: invalid nonce GetOrders: invalid nonce GetOrders: invalid nonce 是不是需要更新wex的api了
2021-08-14 11:12:22
avatar of jkyei
jkyei
我的机器人欠费停止后,重启,必须勾选自动恢复,程序启动后把原来的持仓平掉了。我要的是机器人继续运行,不要把原来的持仓平掉,只要默认,恢复持仓即可,请问怎么设置或修改策略?
2021-03-22 09:57:11
avatar of 123456量化
123456量化
mac的托管者下载不了
2020-12-16 17:30:08
avatar of exclusivezhang
exclusivezhang
感觉这就是我想要的。晚上盯盘太累了。放开双手
2020-11-23 18:26:57
avatar of 孤独的鹰
孤独的鹰
学习
2020-03-20 19:54:09
avatar of xieke
xieke
沙发
2019-10-25 16:40:25
avatar of 小草
小草
这个系列教程就是从简到难,第一篇介绍平台使用,接下来介绍API函数
2023-12-15 14:02:21
avatar of 小草
小草
exchange.GetTicker() 把首页置顶的教程先看完
2021-12-08 12:39:01
avatar of king_wz
king_wz
全仓买入和卖出 没有这样的方法?或者有获取当前价格的方法吗,这样我自己算也行
2021-12-08 12:37:29
avatar of king_wz
king_wz
全仓买入和卖出 没有这样的方法?
2021-12-08 12:35:56
avatar of 小草
小草
用这个类库可以自己划
2021-12-08 11:42:32
avatar of king_wz
king_wz
不是这种我说的是在蜡烛上展示的10日均线 5日均线 能形成金叉死叉的
2021-12-08 10:16:34
avatar of 小草
小草
https://www.fmz.com/strategy/39066
2021-12-08 09:20:20
avatar of king_wz
king_wz
没有,我把例子的拷贝过去的,js有,python没有
2021-12-07 17:13:19
avatar of 小草
小草
python也有划线类库,直接用类库方便,确定是不是没数据
2021-12-07 16:31:08
avatar of 小草
小草
可以,支持完整的python
2021-11-30 18:10:19
avatar of 小草
小草
直接发工单
2021-11-24 18:14:19
avatar of 小草
小草
感谢支持
2021-11-24 18:14:11
avatar of 小草
小草
先看置顶教程
2021-11-24 18:14:02
avatar of 小草
小草
看策略设计,如果能识别出原有仓位不用平常
2021-10-27 09:12:58
avatar of 小草
小草
可以
2021-10-09 16:18:40
avatar of 小草
小草
收益是自己打印的
2021-08-30 09:53:36
avatar of 程序猿猴
程序猿猴
好的,我尝试在有问题的服务器更新了时区,并且同步到了最新的时间,问题仍然没有解决。 然后我更换了一台新的服务器,就可以正常进行连接了。
2021-08-18 09:55:01
avatar of 小草
小草
更新下服务器时间试试,我测试没有问题
2021-08-16 09:47:20
avatar of jkyei
jkyei
策略就是平台上的,自动恢复功能也是平台上的,应该怎么弄?
2021-03-24 15:34:25
avatar of 小草
小草
那要看具体的策略设计了,可以规避掉这种情况
2021-03-23 17:57:52
avatar of jkyei
jkyei
是js的策略,已经很多次了。
2021-03-23 17:30:18
avatar of 小草
小草
麦语言策略吗
2021-03-22 11:45:18
avatar of 小草
小草
有什么问题
2020-12-18 10:42:19
avatar of 小草
小草
首页置顶的教程可以先看完,能解决95%的问题
2020-03-24 12:57:20
avatar of 小草
小草
^_^
2019-10-25 17:06:02