最近几个月政府加大了数字币的监管力度各大平台都已陆续开始加收手续费。像比特币、莱特币这样的传统币的手续费已经达到单向0.2%,即:不管挣钱与否,1000元的一次买入卖出,用户就要承担高达4元的手续费。这样一来,不少市场的K线都变成了一条直线,交易量大跌。算法
可是在仔细思考以后,咱们不难发现,其实大多的交易市场都有手续费(期货、股票)。那么,咱们应该如何在有手续费的市场中实现高频交易而且获利呢?此次,我们就来聊聊带手续费的高频拆单策略。(只适用于软件自动交易,人工交易可能会被累死)安全
1.手续费与交易的涨幅收益关系微信
有手续费,并不表明没有收益,固然若是算法不正确,就必定赔钱。下面,咱们来列举几个不一样价位和手续费的交易物,并计算其收益涨幅,以下表所示:负载均衡
交易物测试 |
单价优化 |
手续费this |
最低收益涨幅(元)spa |
BTC3d |
6666code |
0.002 |
28 |
ETH |
84.25 |
0.0005 |
0.09 |
网易白银 |
40.92 |
0.0008 |
0.07 |
LTC |
25.52 |
0.002 |
0.1 |
ETC |
8.37 |
0.0005 |
0.01 |
网易氧化铕 |
7.29 |
0.0008 |
0.02 |
看官们可从上表中发现,当交易物单价越低的时候,最低涨幅也越低,像ETC及网易氧化铕这样的交易物,单手只要涨1~2分钱便可以有收益。若是按人民币交易并以两位小数计算精度的话,1~2分钱之间就已是最低精度了,相似这样的交易物是比较安全的。并且因为单价比较低,即使是涨了0.02元,利益也是比较大的。下面咱们以ETC为例,对策略及算法进行说明。
2.交易策略
在交易过程当中,主要有三件事儿须要控制,即:
2.1 下单时机
既然是“高频交易”,那策略就要在合理的状况下,尽可能的追求更多的交易次数。一般状况下,可使用短线判读指标来确认是否能够买入,例如:
看官们能够发现,除了SAR外,其余两个指标的数值都很是的小,其目的就是为了提升交易次数。另外,买入指标最好只选取一个,目前笔者实现的软件中,采用的是SMA3和SMA5追逐方式进行断定,以下图所示:
其主循环的代码以下所示:
int tradeStep = 0; while (this.NeedStop == false) { try { var kline = await this.client.GetKline("5min"); if (kline.Count != 0) { this.Config = (await this.client.GetConfig()).AdditionalData; var tvs = kline.Select(k => new TimeValuePair() { DateTime = k.Time, Value = (double)k.Middle }).ToList(); var maShort = MathUtil.GetSMALine(tvs, this.Config.SMAShort); var maLong = MathUtil.GetSMALine(tvs, this.Config.SMALong); switch (tradeStep) { case 0: if (maShort.Last().Value > maLong.Last().Value) { tradeStep = 1; } break; case 1: var hasOrder = await this.HasOrder(); if (!hasOrder) { await this.CreateOrder(); } if (maShort.Last().Value < maLong.Last().Value) { this.rate = 1; tradeStep = 0; } break; default: break; } await this.CheckOrder(maShort.Last().Value < maLong.Last().Value); } } catch (Exception ex) { } }
2.2 下单比例
首先咱们来聊聊拆单的重要性。投资先驱江恩先生说过,永远不要把全部资金投到一个项目上。假设您有100000元现金,要投到ETC上,若是上涨1分钱的话,大致的收益为21元。天呀,天天只要有100次成功交易的话,用不上一个月的时间,您的资金能够翻一倍。可是问题来了,有谁保证,只要出手必定是挣钱的呢?若是行情一旦暴跌5分钱,您此次会赔700元。最很差的状况是,您的10万元被套住了,同时又出现了从低点大涨的行情,这个时候,您就只能眼睁睁的看着别人挣钱了。
为了下降风险,一般状况下,须要将总可用金额拆成10到15份进行交易,即:每只用本身净资产的10到15分之一进行买单。这样的话,您的投资的金额即使被套住,还会有其余的资金进行流动。
笔者在测试过程当中,将3000元拆成了约12单(每单线性衰减),在24*3小时的交易结果统计以下:
经过上表分析,被套住的金额大约只占了约三分之一,其余大部分的资金还在正常流动。此时,即使强行平仓,损失也只有总收入的5%并且。
2.3 下单衰减策略
看到上面的统计结果后,看官们可能会提出疑问,若是按每次下单金额为总金额的1/12计算的话,被套住9单后的强制平仓金额怎么会只有不到6块钱呢?其实,被套住的9单并非按总金额的1/12来下单的,缘由何在?首先,让咱们来看看行情的变化趋势,以下图所示:
该图中,咱们能够看到,每一个可交易区间的上涨趋势基本上都是按着接近抛物线的方式进行的,时间越长,其斜率越小(涨幅越小)。简单的理解,即:价格涨的越高,被套住的可能性就越大,所以,下单的比例就应该越小。按此理论,在一个可交易区间中,下单的状态基本上以下表所示:
随着时间的发展,每次下单的比例,都按照必定的算法进行衰减。
下面咱们来看一下,整个下单策略的业务流程图:
2.4 订单追踪
整个交易策略中,订单追踪是最核心也是最麻烦的一个环节。因为不少交易API提供商会对请求的时间间隔作出限制(例如国内的不少的数据币交易平台要求每秒中,单用户的请求间隔在150毫秒到200毫秒之间),所以须要不少的软件技术支持,如:算法优化、请求共享、负载均衡等。因为涉及到核心商业利益,此处不便详解。
目前蛙人高频交易算法一直在CHBTC上用ETC进行验证,若是朋友们有其余可行的交易接口,能够和我联系,你们一块儿研究。
做者:科学家
Email:warensoft@163.com
微信:43175692