迟到的分享,2014年每天收益5%的高频机器人公开

策略的介绍

策略分享地址:
https://www.botvs.com/strategy/1088
这个策略是我做虚拟货币以来的主要策略,后面经过不断完善和修改,复杂了很多,但主要思想并没有改变,分享的这个版本是无明显bug的 最初版本,最为简单清晰,没有仓位管理,每次交易都是满仓,没有卡死后重启等等,但也足够说明问题。
策略从2014年8月运行,直到今年年初交易所收手续费。期间运行的还算很好,亏损的时间很少。资金从最初的200元跑到了80比特币。具体的过程可以看小草的新浪博客虚拟货币自动化交易之路系列文章。
下图是我具体统计的OKcoin平台的收益曲线,初始资金1000元,可以看到初始钱稳定增加,中间的直线是我策略停止了,后期由于把策略全改为赚币策略,以人民币计价的收益波动剧烈,具体的过程在策略交易两年总结的文章里有描述。

下图是总资产折合币的曲线:

为什么分享这个策略

1.交易所收取手续费后,几乎杀死了所有的高频策略,我的也不例外。但策略改改也许还能用,大家可以研究一下。
2.好久没有分享东西了,这篇文章早就想写了。
3.和大家共同交流学习。

策略的原理

这个策略原理极为简单,可以理解为准高频的做市策略,各位看了之后可能想打人,这都能赚钱,当时几乎谁都能写出来。我开始也没预料到它能这么有效,可见心中有想法要赶紧付出实践,说不一定有意外之喜。在比特币机器人初兴的2014年,写出赚钱的策略太容易了。
和所有的高频策略一样,本策略也是基于orderbook,下图就是一个典型的比特币交易所的订单分布,

可以看到左侧是买单,显示了不同价格的挂单数量,右侧是卖单。可以想象如果一个人要买入比特币,如果不想挂单等待的话,只能选择吃单,如果他的单子比较多,会使得卖单挂单大量成交,对价格造成冲击,但是这种冲击一般不会一直持续,还有人想吃单卖出,价格在极短时间很可能还会恢复,反过来理解有人要卖币也类似。
以图中的挂单为例,如果要直接买入5个币,那么价格会达到10377,在这时如果有人要直接卖出5个币,价格会达到10348,这个空间就是利润空间.策略会在稍低于10377的价格挂单,如10376.99,同时会以稍高于10348的价格买入,如10348.01,这是如果刚才的情况发生了,显然就会赚到其中的差价。虽然不会每次都如此完美,但在概率的作用下,赚钱的几率实际高得惊人。
以现在策略的参数讲解一下具体操作,这个参数当然无法使用了,仅作一个说明。它会向上寻找累计卖挂单量为8个币的价格,这里是10377,那么此时的卖价就是这个价格减去0.01(减去多少可以是随机的),同理向下寻找累计买挂单为8个币,这里是10348,那么此时的卖价就是10348.01,此时买卖价的差价是10376.99-10348.01=28.98,大于策略预设的差价1.5,就以这两个价格挂单等待成交,如果价差小于1.5,也会找一个价格进行挂单,如盘口价格加减10,等待捡漏(更合适的应该是继续往下找跟多的深度)。
另外注意到这个策略只和当前的深度挂单有关,并不关心历史行情和自己的历史成交,策略也没有单笔亏损的概念,其实单次的胜率很高。

进一步的说明

  1. 没有钱或币了怎么办?
    这种情况在我的钱较少是十分普遍,大多数时候只挂一边的单子,但不是大问题。其实可以加入币钱平衡的逻辑,但在平衡的过程难免产生损失,毕竟每一次的成交都是概率的垂青,我选择保持单边等待成交,当然这样也浪费了另一边的成交机会。
  2. 仓位是如何管理的?
    刚开始都是满仓买入卖出,后来根据不同的参数分为不同的组,不会一次完全成交。
  3. 没有止损吗?
    策略有完整的买卖挂单的逻辑,我认为不需要止损(可以讨论),还有就是概率的垂青,成交就是机会,止损可惜了。
  4. 如何调整为赚币的策略?
    此时的参数是对称的,即向上8个币的累计卖单,向下8个币的累计买单,稍微不平衡一下,比如向上改为15个币的累计卖单,使得卖币机会更难得,有更大的几率会以更低的价格接回来,这样就会赚币,反过来就赚钱。实际上前期策略如此有效,币和钱都是增加的。
  5. 如何处理浮亏?
    单笔的交易当然会出现亏损,如卖出后币价上涨,买入后币价下跌,这样的浮亏是不需要处理的,因为交易很频繁,每天来为几千次都是正常的,浮亏是正常的,只要盈利的概率更大即可。
  6. 如何防止黑天鹅?
    比特币的黑天鹅时间很多,有时候就是一路下跌,一点卖出的机会都没有,这种情况也不用太担心,因为黑天鹅时间往往会带来高的波动性,策略赚的正是这部分的钱,亏损也能很快赚回来。

代码讲解

完整的代码可以见我在www.botvs.com得策略分享,这里只讲解核心逻辑函数。在没有改动的情况下,在botvs自带的模拟盘竟然运转完全正常,这是一个3年多前的策略,平台还支持到现在,太让人感动了。
首先是获取买卖价函数GetPrice(),需要获取订单深度信息,注意不同平台的订单深度信息长度不同,以及即使遍历了所有订单仍然没有所需要的量的情况(在后期许多0.01的网格挂单会导致这种情况),调用是GetPrice(‘Buy‘)就是获取买价。

function GetPrice(Type) {
   //_C()是平台的容错函数
    var depth=_C(exchange.GetDepth);
    var amountBids=0;
    var amountAsks=0;
    //计算买价,获取累计深度达到预设的价格
    if(Type=="Buy"){
       for(var i=0;i<20;i++){
           amountBids+=depth.Bids[i].Amount;
           //参数floatamountbuy是预设的累计深度
           if (amountBids>floatamountbuy){
               //稍微加0.01,使得订单排在前面
              return depth.Bids[i].Price+0.01;}
        }
    }
    //同理计算卖价
    if(Type=="Sell"){
       for(var j=0; j<20; j++){
    	   amountAsks+=depth.Asks[j].Amount;
            if (amountAsks>floatamountsell){
            return depth.Asks[j].Price-0.01;}
        }
    }
    //遍历了全部深度仍未满足需求,就返回一个价格,以免出现bug
    return depth.Asks[0].Price
}

  每个循环的主函数onTick(),这里定的循环时间3.5s,每次循环都会把原来的单子撤销,重新挂单,越简单越不会遇到bug.

function onTick() {
    var buyPrice = GetPrice("Buy");
    var sellPrice= GetPrice("Sell");
    //diffprice是预设差价,买卖价差如果小于预设差价,就会挂一个相对更深的价格
    if ((sellPrice - buyPrice) <= diffprice){
            buyPrice-=10;
            sellPrice+=10;}
    //把原有的单子全部撤销,实际上经常出现新的价格和已挂单价格相同的情况,此时不需要撤销
    CancelPendingOrders()
    //获取账户信息,确定目前账户存在多少钱和多少币
    var account=_C(exchange.GetAccount);
    //可买的比特币量,_N()是平台的精度函数
    var amountBuy = _N((account.Balance / buyPrice-0.1),2);
    //可卖的比特币量,注意到没有仓位的限制,有多少就买卖多少,因为我当时的钱很少
    var amountSell = _N((account.Stocks),2);
    if (amountSell > 0.02) {
        exchange.Sell(sellPrice,amountSell);}
    if (amountBuy > 0.02) {
        exchange.Buy(buyPrice, amountBuy);}
    //休眠,进入下一轮循环
    Sleep(sleeptime);
}

  

尾巴

整个程序也就40多行,看上去十分简单,但当时也花了我一个多星期,这还是在botvs平台上情况下。最大的优势还是起步早,在2014年,市场上以搬砖为主,网格和抢盘口的高频也不多,使得策略如鱼得水,后来竞争不可避免越来越激烈,我的钱也越来越多,面临的挑战很多,每隔一段时间都要进行较大的改动来应对,但总体还算顺利。在交易平台不收取手续费的情况下,是程序化交易的天堂,散户因为不收手续费跟倾向于操作,为高频和套利提供了空间,这一切也基本随着动辄0.1-0.2%的双向手续费终结了,不仅是自己被收费的问题,而是整个市场活跃度下降。
但不需要高频的量化策略任然有很大的空间。

转载自 BotVS

作者 小草

时间: 2024-10-09 22:42:30

迟到的分享,2014年每天收益5%的高频机器人公开的相关文章

Uploadify 笔记分享 -- 2014年10月18日

最近要做一个项目,有个部分需要用到Uploadify,以前用过,但不是很懂,找了无数遍的中文文档,发现好多都是以前的,都不能用,一时间索性自己写了个笔记,随用随查 <form> <input id="file_upload" name="file_upload" type="file" multiple="true"> <div id="fileQueue"></d

资源分享:微信控制家庭智能小管家机器人

今天分享微信控制家庭智能小管家机器人(附语音聊天.人脸检测.自主巡航等)的资料,内容比较多,这边文章不够放,更详细资料到闯客网技术论坛下载,或加群获取:81328832下载地址:https://bbs.usoftchina.com/thread-203794-1-1.html 基于互联网 的智能机器人管家_论文: ??该项目是基于嵌入式开发平台的机器人,这个机器人主要使用树莓派和arduino作为核心控制,在互联网这个大的平台上进行机器人的工作和维护.主要使用环境是在室内.机器人系统运行的环境是

腾讯投资在行&分答,探索分享经济下的未来社交模式

作者:楠沨 [IT战略家] 本轮融资并未公布具体金额,分答表示资金将更多投入到产品及用户体验迭代,知识网红的扶植,品牌推广等方向,由穆棉资本作为独家财务顾问.这意味着,在行&分答可能就此获得中国互联网最重要的两个资源:用户导流和资金:而腾讯握住了在行&分答在知识按需分享这一领域的未来价值. 分享经济兴起,知识变现成突破口 我们吸收信息从书本到电视,从电视到电脑,从电脑到手机,形式越来越个性化和直接,时间碎片化和个人精力受限的双重压力下,知识网红应运而生.用户渴望更简单更方便就能得到想要的知

2014年开发者服务市场占有率报告

开发者在选用服务时总是不知道如何下手,有句话说得好"让市场检验竞争力".DevStore调查了国内近十家应用市场,抽取了其中近14万应用,通过技术手段和数据分析,得出此开发者服务市场占有率报告,供大家参考.         总排名 总排名前三的分别是腾讯开放平台--移动应用(QQ用户能力).Google AdMob.友盟游戏统计分析. 这个结果大家也都能明晓其原因:用户量是腾讯骄傲的地方,也是开发者希望能够得到的资源,使用QQ的第三方登录可以减少用户的注册时间,提高用户体验:广告是谷歌

2014年最全面统计报告之开发者服务市场占有率

开发者在选用服务时总是不知道如何下手,有句话说得好"让市场检验竞争力".DevStore调查了国内近十家应用市场,抽取了其中近14万应用,通过技术手段和数据分析,得出此开发者服务市场占有率报告,供大家参考. 总排名 总排名前三的分别是腾讯开放平台--移动应用(QQ用户能力).Google AdMob.友盟游戏统计分析. 这个结果大家也都能明晓其原因:用户量是腾讯骄傲的地方,也是开发者希望能够得到的资源,使用QQ的第三方登录可以减少用户的注册时间,提高用户体验:广告是谷歌赖以生存的技能,

2014以及未来几年编程语言趋势

2014以及未来几年编程语言趋势 热门还是冷门?从Web到主板再到培训工作,一同探讨哪些项目正当其时.哪些则逐渐退出历史舞台. 程序员总是喜欢对时尚界冷嘲热讽,认为那里的风潮总是一波接着一波.令人莫衷一是.裙子长了又短.短了再长,色彩的选择也是你方唱罢我登场,就连领带也是时宽时窄.相比之下,技术领域则稳定得多--严谨.科学.数学以及精度始终占据统治地位,成为从业者们一直遵循的永恒原则.但这并不是说编程是一门缺乏趋势变化的专业技能.与时尚界不同的是,编程讲求的始终是对更高效率的追寻,更高定制程度与

17个短视频渠道分成收益全解析

有很多朋友在问小雨关于一些渠道分成的问题以及特别大家都特别想要一份完整的各平台的分成收益表,小雨在做整理的同时发现确实平台在这方面都会有些不同的升级.一方面是这一段时间,各个平台对于短视频扶持力度加大,导致一些平台盈利点的一些变化:另一方面也出现了很多值得创作者关注的新渠道.那这次关于这些渠道的变化,小雨就给大家整理一下各平台的一些变化,也让大家重新认识一下各大平台吧. 一.资讯客户端渠道 1.今日头条 今日头条作为老牌的自媒体渠道,基本没有什么变化.他的收益方式主要是以下几种: 平台分成 平台

2014十佳IDC评选-专访互联通华南区总经理黄健忠

IDC评述网11月27日报道:由IDC评述网组办的"2014-2015年度全国十佳IDC评选"于2014年11月08日正式启动投票,活动持续4个多月,截止至2015年02月05日结束. 今年十佳IDC评选活动,吸引了包括万网.蓝汛.网宿科技.世纪互联.西部数码.中国数据.企商在线.北京互联通.中国E动网.联动天下等近百家知名IDC服务商参与,过半IDC商家投票数超千票.另外,还专门设置了#2014十佳IDC评选#微博有奖转发送100元活动,共积极了数十万人次参与评选投票. 众多参与十佳

公开运维技术分享的一些经验

技术分享三条实战经验: ● 良好的逻辑性 ● 自己真实经验总结 ● 多练习 首先,说明下,我不是技术分享高手,分享了次数比较多,有点心得:另外,听的分享多了,对好坏也有一些感受. 还有,在此特别感谢下西山居的运维开发架构师,<Puppet实战>的作者刘宇,我的许多分享经验来自于宇哥,并且得到了宇哥多次的,一对一贴身的,手把手的指点. 一 什么是成功的技术分享 判断分享是否成功,关键是看自己要传递的想法,有没有被听众理解和接受,技术分享不是川普竞选,不追求热闹的效果,也不追求所有人都能听懂,一次