网格交易系统开发

更多精彩内容, 欢迎关注公众号:数量技术宅 ,也可添加技术宅 个人微信号:sljsz01, 与我交流。

网格交易策略原理

网格交易策略是一种不预测价格涨跌的交易方法,按照价格在网格的走势形态执行交易。通常是在股票价格下跌至一个网格时,进行买入;在价格走势上涨至一个网格时,进行卖出。网格交易法是一种买跌卖涨的交易方式,它是属于逆势的交易方式,与常见的价格趋势交易相反。

网格交易策略的第一步是设定价值中枢(基准价格),然后利用网格高度,对投资标的进行机械式操作。我们以下图为例,当价格低于基准价格1个网格高度,我们买入1份的仓位,如果价格继续下跌,跌破2个网格高度,我们继续买入第2份的仓位,如果此时价格上涨,又涨回到了基准价格下方的1个网格高度,我们卖出第2份买入的仓位,如果价格仍然继续上涨到了基准价格,我们再继续卖出第1份买入的仓位。而对于先卖空、后买入回补的做空操作,相当于是与做多完全相反的操作,价格每上涨1个网格高度,就做空1份的头寸,而价格每下跌1个网格高度,就平掉1份做空的头寸。

网格交易策略的优势在于充分的捕捉市场上下的大幅波动,只要价格不出现极速的单方向行情,网格交易就能一次又一次的赚取市场往复波动的利润。我们来看一个具体的例子,假设某只股票的价格从11元跌到3.87元,而后又涨回到11元,如果我们只是持有该股票,最终的收益率是0,而如果我们按照下表每档10%来进行单向做多的网格交易(A股只能做多),根据测算,网格交易总计买入97104.47元,卖出后总计收回107782.75元,总体收益11%。

网格交易策略,配合马丁格尔仓位管理,不出意外的状况下资金曲线是45度角上扬的。但网格交易比较害怕单边行情,我们需要对单边行情进行风控预案的设计,下图测试曲线向下的阶段,是不可避免的单边行情带来的回撤。

数字货币双向网格策略的实现模块

发明者量化(原BotVS)是首家支持商品期货与数字货币(比特币量化交易、区块链资产量化交易)的量化交易平台, 支持Javascript/Python/可视化/麦语言/C++ 五种编程语言,在币圈的量化交易中,应用尤其广泛。本期分享,技术宅将借助发明者量化平台,采用JavaScript语言,实现一个带风控的数字货币的双向网格交易策略。

对于这个数字货币的双向网格交易策略,我们在实现的时候,将它拆解为了一个个的功能模块来实现,而每一个功能模块,都用一个或几个函数进行封装。下面我们介绍一下程序中最重要的几个模块。

网格挂单模块 :根据计算的动态网格中心,按照向上间隔一定价格距离,依次挂卖单,同时向下间隔一定价格距离,依次对称的挂买单,数量也可以选择是按照等量挂单,还是马丁加仓法挂单,并记录下所有报单的ID。报单结束,休眠一定时间后,根据报单ID再次查询所有报单,返回订单结构体。

检查订单成交模块 :遍历所有的在途报单,如果挂入的开仓单成交,立即按照开仓单成交的方向,反向挂入平仓单,平仓单的挂单价格是开仓价格盈利一个网格单位所计算得到的价格;如果挂入的平仓单成交,也是类似逻辑,立即挂入反向的开仓单,同时开仓单的挂单价格是平仓时对应上次开仓单的挂单价格不变。

止损模块 :首先计算最新中间价,如果新的中间价偏离了网格报单中间价20%的比例,撤掉所有订单,并对当前的亏损仓位全部止损。例如,价格向下偏离原始网格中点,平掉所有多头仓位;而价格向上偏离,平掉所有空头仓位。平仓结束后,将新的中间价设为网格中点,并调用挂单模块,重新报多空开仓的网格单。

策略整体开发框架

介绍完核心的三大模块,我们通过一张执行流程图,来看一下这个网格策略的整体开发框架。

首先,策略启动,我们调用init函数进行初始化,init函数执行两个功能,一是通过历史行情计算确定网格中点,二是读取账户信息,包括挂单、成交、钱、币等信息。

接着,调用putGridOrder函数,执行网格挂单模块,在该模块的执行过程中,依赖init计算的网格中点,往上、往下分别等间隔的挂n份多单、空单。

再接着运行checkStopLoss,检查当前最新行情是否击穿所有网格并触发止损,此处有两个分支:如果触发止损,我们首先平掉亏损方向的所有订单,平仓完成后重新执行初始化,即获取网格中点,读取账户,重新对新的网格中点执行网格挂单;而如果止损未触发,则执行checkout模块,检查挂单中是否有订单已被成交,如果开仓单被成交,则在对应止盈的格子价位挂反向平仓单,如果平仓单被成交,则在对应被成交的开仓价位,重新挂开仓单。通过流图我们可以看到,整个程序是一个无限循环判断+执行的过程。

以上,就是我们对于这个数字货币双向网格交易策略实现代码的详细介绍,欢迎大家扫码添加数量技术宅个人微信,领取策略的完整代码。

关注 “数量技术宅”不迷路,您的点赞、转发,是我输出干货,最大的动力

往期干货分享推荐阅读

通过深度学习股价截面数据分析和预测股票价格

Omega System Trading and Development Club内部分享策略Easylanguage源码

一个真实数据集的完整机器学习解决方案(下)

一个真实数据集的完整机器学习解决方案(上)

如何使用交易开拓者(TB)开发数字货币策略

股指期货高频数据机器学习预测

如何使用TradingView(TV)回测数字货币交易策略

如何投资股票型基金?什么时间买?买什么?

【数量技术宅|量化投资策略系列分享】基于指数移动平均的股指期货交易策略

AMA指标原作者Perry Kaufman 100+套交易策略源码分享

【 数量技术宅 | 期权系列分享】期权策略的“独孤九剑”

【数量技术宅|金融数据系列分享】套利策略的价差序列计算,恐怕没有你想的那么简单

【数量技术宅|量化投资策略系列分享】成熟交易者期货持仓跟随策略

如何获取免费的数字货币历史数据

【数量技术宅|量化投资策略系列分享】多周期共振交易策略

【数量技术宅|金融数据分析系列分享】为什么中证500(IC)是最适合长期做多的指数

商品现货数据不好拿?商品季节性难跟踪?一键解决没烦恼的Python爬虫分享

【数量技术宅|金融数据分析系列分享】如何正确抄底商品期货、大宗商品

【数量技术宅|量化投资策略系列分享】股指期货IF分钟波动率统计策略

【数量技术宅 | Python爬虫系列分享】实时监控股市重大公告的Python爬虫