遍历所有USDT本位永续合约持仓币种当期资金费、下期预测资金费率,找到资金费率小于我们要求的币种(代表此时我们已经只能收取极低的资金费率,或是要支付资金费率)
实时跟踪该币种的期现价差比率(即USDT本位永续合约价格减去现货价格的百分比)
当实时期现价差比率小于设定值,立即同时对现货、USDT本位永续合约进行平仓
完成平仓逻辑,更新配置文件中的现货、合约持仓记录、可用资金
三、附加功能
以上描述的逻辑,是基础的开、平仓的实现逻辑,与此同时,无论是币本位永续,还是USDT本位永续,我们都为程序设计了以下的附加功能:
考虑到资金容量的问题,程序支持分批交易和拆单,减小对特别是小市值币种的市场冲击
期现价差比率,我们在跟踪过程中采用的是保守的算法,比如准备开仓时,我们的期现比率价差,用的是现货的卖5价与期货的买5价之间的比率价差;而在准备平仓时,我们反过来,用的是现货的买5价和期货的卖5价之间的比率价差
策略的关键参数包括资金费率的进出场阈值、期现价差的进出场阈值、分批交易的金额,都设计成外接的配置文件,可以灵活调整
对于报单未成交问题,专门处理了报单、撤单、追单逻辑,确保套利头寸双边成交。
整个资金费率策略,包含了资金费率轮动的大逻辑。在一轮一轮的开、平仓过程中,我们不断地在高资金费的币种建仓,吃资金费,等到该币种资金费率降低,再平仓切换下一个高资金费币种,继续吃高资金费,由此逻辑不断进行轮动,从而增强收益。
如何执行自动交易编写+调试完成策略,下一步我们就将部署执行自动交易了。部署自动交易,分为四步。
第一步,策略源码打包上传云服务器
我们之所以选择云服务器交易,是因为第一,数字货币市场是7*24小时交易的,我们的个人电脑很难做到常年稳定的不关机,第二,许多数字货币的API使用国内IP是无法访问的,所以我们的最优选择,是租用一台物理地址位于海外(地址靠近想要交易的交易所)的服务器。出于稳定性考虑,我们服务器选择Linux系统。
上传我们可以通过Xsehll的sz/rz命令。上传完成后,我们可以在服务器中查看到对应的策略工程项目文件。
第二步,配置参数
参数分为基础参数和策略参数,基础参数位于common模块,需要配置包括最基本的交易所access_key,secret_key,最大开仓金额total_amount,以及每次开仓数量every_lot,此处every_lot是按照合约的张数设定,在交易现货时,会自动按照合约张数对应的面值,计算现货交易量。
策略参数部分,位于coin_swap模块。该模块的参数包括3个开仓参数,funding_rate_limit:开仓最小的当期资金费率阈值,funding_rate_next_limit:开仓最小的下期预测资金费率阈值,price_thresh_open:合约、现货的最小开仓价差(大于价差才开仓)。以及3个平仓参数:funding_rate_exit_limit:当期资金费率最大不超过的值,funding_rate_next_exit_limit:下一期预测资金费率最大不超过的值,price_thresh_close:合约、现货的平仓价差(小于价差才平仓)。
至于配置文件最后的spot和swap部分,在初始不需要设定,由程序后续在执行开平仓操作时自动写入,比如我们此时截图状态,持有了eos、eth的现货和永续合约。
第三步,开启screen镜像
由于我们选用的是Linux系统,如果直接在控制台运行程序,当我们关掉Xsehll或其他服务器登陆软件后,程序会自动停止。为保证程序一直在后台运行,我们需要引入Screen工具,现在Linux系统安装Screen,随后用如下命令: