币圈量化交易萌新看过来--带你走近币圈量化(五)

2 years ago
Labels:数字货币/量化交易/期货02020
Article Source: 发明者量化

    上篇文章我们讲解到了一个简单网格策略的交易逻辑分析,本篇我们继续来完成这个教学策略的设计。


    交易逻辑分析

    上篇文章我们说到,只要遍历网格每个网格线,判断当前价格上穿下穿网格线即可触发交易动作。但是实际上逻辑细节还是有不少的,往往不了解策略编写的萌新们容易形成一个错误认知就是“逻辑非常简单,代码应该也就几行而已,实际编写起来发现细节还是很多的。”


    首先我们要考虑的第一个细节就是,无限网格这方面的设计。还记得上篇文章我们一起设计了一个生成初始网格数据结构的函数createNet么?这个函数是生成了一个网格线是有限个数的网格数据结构。那么如果在策略运行时,价格超出了这个网格数据结构的边界(超过最上边即价格最高、最下边即价格最低的网格线)呢?所以我们首先要给网格数据结构增加延伸机制。开始编写策略main函数,main函数就是策略开始执行的代码:


    让网格数据结构可以延伸就是这段代码(从上边代码中节选):


    接下来就要考虑如何具体实现交易触发。


    可以看到:

    上穿网格线条件:preTicker.Last < p.price && ticker.Last > p.price

    下穿网格线条件:preTicker.Last > p.price && ticker.Last < p.price


    就是我们上篇所讲的:

    上穿下穿只是判断可否下单交易的第一步,其中还需要判断网格线数据中的标记。如果是上穿,就判断价格低于当前网格线并且最近的网格线上的buy标记,如果buy标记的值为true,则说明上一根网格线买入过,就重置上一根的buy标记为false,重置当前网格线sell标记为false。判断完刚才的条件,如果没有触发则继续判断,如果当前网格线上buy/sell标记均为false,则说明当前网格线可以交易,由于是上穿,我们这里执行卖出操作,执行之后标记当前网格线sell标记true。下穿处理逻辑相同(这里留给萌新们思考思考)。


    完整的策略回测

    为了可以看到一些回测时的数据,编写了一个函数showTbl显示数据。


    完整策略代码:


    策略回测:

    可以看到网格策略的特点,遇到有趋势行情的时候会有较大浮亏,震荡行情下收益才会回升。所以网格策略并非无风险,现货策略尚可“躺平”硬撑,期货合约网格策略则风险更大,需要对于网格参数偏保守设置。

    免责声明:本文章仅代表作者个人观点,不代表本平台的立场和观点。本文章仅供信息分享,不构成对任何人的任何投资建议。用户与作者之间的任何争议,与本平台无关。如网页中刊载的文章或图片涉及侵权,请提供相关的权利证明和身份证明发送邮件到support@aicoin.com,本平台相关工作人员将会进行核查。

    Comment
    2021-08-27 06:26
    不懂表达什么