数字货币合约做市策略
作者:互联网
更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流。
做市策略原理
做市策略(market-maker strategy)是一种风险中立(risk-neutral)盘口价差套利策略,由于其交易频率很高,也归属到高频交易的范畴。
做市策略的基本原理是:在盘口Orderbook的买单合适位置、卖单合适位置,插入委买单和委卖单,如果插入的两个单子都成交的话,做市商就吃到了买卖单之间的价差,而整个过程结束后,做市商所持有的头寸并没有变化。如果买卖单之间的价差扣除各种交易手续费之后还有盈余,那么该做市商就获得了相应的盈利。
对于数字货币交易所来说,交易所更加支持流动性提供者的挂单行为,特别是在更为需要深度的合约市场,挂单(Maker)会比吃单(Taker),收取更为低廉的手续费。甚至对于交易量、资金量大的账户,会提供零费率、负费率(返还)的佣金比率。
虽然做市有获取盘口买卖价差、更低廉的费率这些优势,然后做市也有其风险所在, 这是因为,做市商本质上是整个市场的交易对手方。如果市场呈现急剧的单边行情,做市策略下达的买卖委托单会大概率出现单边成交的情况,而这些成交的头寸,往往与市场的单边趋势是反向的,积聚的头寸,容易在单向行情中亏损。比如下图的市场环境中,做市策略比较容易累积多单而出现亏损。
因此,我们的做市策略,在进行做市交易前,在选择是否下达做市指令之前,会预判一下市场的趋势明显程度,我们采用的是过去30分钟K线的5周期均线和30周期均线来判断,之所以选择这个K线周期和计算周期,是为考虑了市场中期的趋势,k线和计算周期太短,太容易受到短期价格噪音的干扰,周期太长,则会比较迟缓,在趋势转向时不够灵活。
当30分钟K的短周期均线位于长周期均线之上时,我们只做多头方向的做市,即选择合适的价格,先挂多头开仓单,成交后再挂多头平仓单;而当30分钟K的短周期均线位于长周期均线之下,我们只做空头方向的做市,先选择合适的价格挂空头开仓单,成交后挂空头平仓单。
火币交割合约API的实现
在描述完做市策略的原理后,我们接下来就调用火币交割合约API,以API为基础框架,来实现我们这一个做市策略的交易系统。之所以选择合约API,是因为合约可以双向操作,手续费更低,并且可以加杠杆交易,比起现货交易更加的灵活。
第一部分,我们先确定策略需要交易的参数,比如交易的品种:contract,交易的合约:deliverate,挂单距离最新买一、卖一盘的价格偏移:offset,每次下单的合约张数:lots。这些参数,是该策略交易最核心的参数,我们在系统初始化时就指定好,大家也可以根据想要交易的不同品种,自行修改。
第二部分,是策略大方向的判断,我们通过30分钟k的双均线,来判断趋势,以及做市的开仓方向。变量j的正负号,告诉我们短期均线是位于长期均线的上方还是下方,j>0,进入多头开仓的逻辑,j<0,进入空头开仓的逻辑。
第三部分,多头做市,多头做市包括开仓、平仓部分,在确定趋势是多头后,我们通过rest接口,读取盘口最新的买一档价格bid1,但我们并不直接在bid1挂单,因为盘口的买卖价差ask1-bid1,不一定够来回的手续费。我们通过offset参数来调节。bid1-offset作为买开仓挂单的参数。挂单后,我们判断开仓价格相比较最新盘口的bid1是否需要移动,如果bid1移动,需要重新计算买挂单价挂单。
对于平仓来说,当我们的开仓挂单成交,立即读取盘口最新的卖盘价格ask1。同样的道理,我们并不直接挂ask1,再次通过offset参数调节。这样一来,我们每次一买一卖的利润,相当于ask1-bid1+2*offset,相比较单纯的盘口的买卖价差ask1-bid1,多了一部分让我们可以自主控制的额外调节变量,通过调节该变量,我们既可以控制下单的频率,也可以控制策略的平均盈利幅度。
第四部分,空头做市,空头做市的实现与多头做市是镜像对称的,我们通过先挂ask1+offset的空头开仓单,成交后再挂bid1-offset的多头平仓单,实现的过程,可以参考多头做市。下图是策略开始运行后,系统打印的部分监控日志。
可能的改进方向
以上,我们介绍了做市策略的原理,以及用api实现做市策略,并开启实盘的全过程。
对于这个策略,他的基础思路,还是相对简单的,如果我们要做出印钞机式的斜45度向上的做市高频策略,可以在这个策略的基础上加以改进,此处我们提出几个改进的思路,供大家后续研究时参考。
首先,选择费率尽可能低的交易所、账户,比如bm,这个大家耳熟能详的负费率做市交易所,或是在交易所有费率优惠活动的时候,比如近期火币对所有的HUSD交易的maker都是零费率,无疑也为策略提供了用武之地。
其次,对于挂单时机的选择,我们目前只是在挂单策略中加入了趋势的判断,除此之外,还可以引入更多的盘口择时信号,比如order imbalance相关方向信号,等等。
此外,还可以考虑加入一定的风控机制,例如累积一定单边头寸只平仓;行情快速反向移动时对价、超价止损等。
想要获取本次分享的完整代码,或是任何关于数据分析、量化投资的问题,欢迎添加技术宅微信:sljsz01,与我交流
往期干货分享推荐阅读
Omega System Trading and Development Club内部分享策略Easylanguage源码
【数量技术宅|量化投资策略系列分享】基于指数移动平均的股指期货交易策略
AMA指标原作者Perry Kaufman 100+套交易策略源码分享
【数量技术宅|金融数据系列分享】套利策略的价差序列计算,恐怕没有你想的那么简单
【数量技术宅|量化投资策略系列分享】成熟交易者期货持仓跟随策略
【数量技术宅|金融数据分析系列分享】为什么中证500(IC)是最适合长期做多的指数
商品现货数据不好拿?商品季节性难跟踪?一键解决没烦恼的Python爬虫分享
【数量技术宅|金融数据分析系列分享】如何正确抄底商品期货、大宗商品
【数量技术宅|量化投资策略系列分享】股指期货IF分钟波动率统计策略
【数量技术宅 | Python爬虫系列分享】实时监控股市重大公告的Python爬虫
标签:数字,盘口,做市,挂单,bid1,分享,合约,策略 来源: https://www.cnblogs.com/sljsz/p/14851253.html