从五月初开始起手搭建交易程序,一路修修改改,目前效果良好,2个月累计盈利245%。记录下目前遇到的一些问题以及解决思路,先贴个图,目前代码在Github个人私有仓库,不打算开源出来,一路也缝缝补补了好多问题:

其中按照时间整个策略中比较核心的问题是:

如何解决插针/爆仓问题(仓位/风险管理):

问题的本质其实是仓位管理,但是由于BTC等数字货币本身的计价特殊性,如果按照币本位的思路来管理仓位,单边下跌最后还是会爆仓。所以理想的情况应该是摒弃币本位思想,在期货合约中首先按照等值开启对应空单对冲(如果按照币本位思路,最大的问题是其实还是在看多,这是很幼稚的,跟开多没区别),然后按照期望的杠杆率根据交易策略来实现对应的多空下单。例如想设定杠杆比例为2,那么先计算对冲仓位,然后根据对冲仓位分别计算做多仓位=对冲 * 杠杆率, 做空仓位 = 对冲 + 做多;按照这种思路,去跑永续合约一辈子都不怕爆仓

如何解决加仓/减仓问题:

这个问题更加的恶心,付出了5W RMB+的交易成本+反向操作成本大概实践出来一个大致的解决方案,因为是趋势策略,本来预期是盈利5%就顺势加仓,在最新仓位基础上盈利5%加仓5%,亏损5%减仓5%,发现实际操作并不如想象中一样,因为单边小周期趋势上涨中,遇到鱼尾情况时,往往是5%加仓接上5%减仓,但是实际是亏损的(1.05 * 0.95),加上本身的交易磨损,会不断打脸。所以目前实践下来解决思路是先判断基于目前的持仓盈利是否超过特定阈值,比如15%,那么增仓5%,再按照此基数+15% & -10% 的范围来进行下一次增减仓操作,抚平了仓位波动 & 交易成本损耗(实际中参数设定还是要根据选择的周期级别来动态设置):

如何减少预期固定亏损 & 关于比特币实时价格波动特性的预防:

相对于其他金融交易产品,BTC/ETH等数字货币的波动性特别大,具体的影响体现在价格的拉升和砸盘通常在一两分钟之内,产生5%-10%的跳动,如果是做中短期趋势交易,就会特别受影响,这是其一;目前我的解决思路是20s轮训一次最新价格,因为防止控制频繁的围绕出入场规则下调整仓位而引起的交易手续费磨损+交易滑点情况。另外就是rest 轮训,交易所的K线在整点的时候可能并没有生成,所以实际的轮训任务要稍微留一点buffer来防止此类情况发生,但是就是这样,往往交易信号发生的时候实际交易也有100点-200点的滑点,肉疼。

另外可以考虑加上一点额外的判断转向的buffer,用来防止不断的在20s内不停反向波动导致频繁多空互转的case出现,所以同时可以定义一个decisionThreshold,用来判断多少个20s以后出发转向交易。(其实这个本身也是一个悖论,剧烈拉升/砸盘的预期和这个设定恰恰相反)

其二是根据趋势交易的本质,固定亏损另一部分是来自于手续费和来回的反向试错交易,要减少这部分固定损耗,目前实践+思索下来两条路,第一条是选择合适的周期,1H MA20以内的想都不要想了,我已经试过,死路一条;第二条在鱼尾阶段要根据特定出入场策略+ATR幅度实现一个取较大值的防御策略,放弃一部分潜在盈利,来换取减少交易成本&反向亏损的可能,这是目前我选择的路线。


关于交易层面的一些思考:

  • 关于多空翻转的策略,只要能够稳定盈利的人,其实都可以明白,所有大道都相通,选择海龟出入场规则,单均线规则,还是双均线等等,其实原理都是相通的,唯一有一些区别的可能是针对过滤器,怎样降低振荡期的交易磨损才是关键,鱼身段大家基本可以吃到,可是振荡期亏损的多少决定了最终的盈利。
  • 周期的选择,往大了选择盈利比较稳,就要接受大的回撤;往小了选回撤很小,但是考虑到交易磨损,很可能实际上资金曲线可能是最终爆拉上去然后一路下降,最终不断亏损。
  • 决策的执行一定要到位,前期的策略修改可以不断反悔,稳定下来一定要坚决的程序下单,虽然这个道理前人不断在强调,但是我相信任何一个做自动化交易的人都会遇到这个问题。前期多多少少有些管不住。
  • 一但有了比较充实的盈利垫,整个自动化交易就会顺畅很多,心态上就会放宽很多。只会看看账户余额,不用担心白天晚上随时会产生的剧烈波动。毕竟这东西是7 * 24的,人工的话命都没了。

后续:

目前积累了不少交易数据了,后续要再完成2个模块:

1, 交易监控模块,用来发送心跳请求来检测交易模块是否自动停止了,一旦停止短信通知,目前短信通知功能已经集成到交易模块了。可以随时挪过来用。

2,资金曲线模块,由于目前是在火币做合约,但是火币没有提供资金曲线图等参数,准备在交易日志中抽取对应的资金信息,用pyEchart来读取对应仓位来生成对应资金曲线图,用来计算sharp ratio等等一系列参数。

3,还要进一步思考仓位大了交易方向变换的情况下如何减少交易成本,目前是按照挂对手方买一卖一来操作,BTC合约张数一单超过了1000-2000这个区间就会比较容易造成更多的交易成本磨损。

4,BTC和其他主流币之间的走势已经开始产生了分化,后续还是要上多品种,等盈利多一些可以拆一些跑其他品种的合约了,不过BTC和其他主流的周期看起来也要保持不同,因为波动率明显不在一个级别。趋势交易的核心还是在做多波动率。所以理论上非BTC主流数字货币可能最终的效果更好,如果以后它们的相干性降低的话。

 

原文https://zhuanlan.zhihu.com/p/78238392
编辑于 2019-08-15