2016-11-0216:11:31,955 - timeLog - INFO - Qty:0.000000 is smaller than exchange minimumquantity(huobi min:0.000100, okcoin min:0.010200),so ignore this signal
2016-11-0216:11:31,955 - timeLog - INFO - waiting for 1.000000 seconds for next cycle...
2016-11-0216:11:35,036 - timeLog - INFO - Found signal
2016-11-0216:11:35,036 - timeLog - INFO - Qty:0.000000 is smaller than exchange minimumquantity(huobi min:0.000100, okcoin min:0.010200),so ignore this signal
2016-11-0216:11:35,036 - timeLog - INFO - waiting for 1.000000 seconds for next cycle...
2016-11-0216:11:36,778 - timeLog - INFO - Found signal
2016-11-0216:11:36,778 - timeLog - INFO - Qty:0.000000 is smaller than exchange minimumquantity(huobi min:0.000100, okcoin min:0.010200),so ignore this signal
2016-11-0216:11:36,779 - timeLog - INFO - waiting for 1.000000 seconds for next cycle...
WeQuant量化交流QQ群 519538535,不定时发放交易策略实盘源码,群主带你装逼带你飞。
源代码地址:wequant-org/liveStrategyEngine
-----以下是正文,欢迎转载-----
一、比特币搬砖的基本原理
比特币搬砖是一种跨市场套利策略。其基本原理是在币值低的交易所买入比特币,同时在币值高的交易所卖出同等数量的比特币,从而实现稳定盈利。
假设我们在火币网放置如下初始仓位:
BTC:4
CNY:10,000
在另一个交易所(比如OKCoin)放置完全相同的初始仓位。当火币网的比特币买一价格(huobi_buy_1)高于OKCoin的卖一价格(okcoin_sell_1)时,计算机程序从OKCoin市价买入一定数量(记为quantity)的比特币,然后立刻在火币网上用市价卖出同等数量的比特币,这个过程完成后,我们持有的总比特币数量不变,但是现金增加了(huobi_buy_1- okcoin_sell_1)*quantity。
当然,实际的搬砖套利过程中,还要处理以下问题:
怎么对接实盘
怎么确定每次搬砖套利的quantity
套利的quantity小于交易所要求的最低交易数量时怎么处理
先处理买单,还是先处理卖单,还是有其他订单处理机制
如何保证两个单子的成交数量是一样的
币价出现波动(比如大幅下跌),怎么办
什么时候触发交易所之间的比特币转移和资金转移
想套其他币种(比如莱特币),怎么搞
这篇小文章将会手把手地告诉您我们是怎么处理这一系列的问题的。
二、模块介绍
我们的本地系统是基于Python编写的。Python是目前最流行的量化策略编写和原型系统开发语言,基于Python的各种金融工具、数据处理以及机器学习包都非常丰富,它们极大地提升了量化策略开发者的效率。我们采用Python3作为Python语言的版本。
1. 怎么对接实盘
火币的Python实盘API Demo在这里可以找到:
GitHub - huobiapi/demo_python_v3OKCoin的Python实盘API Demon在这里可以找到:
rest/python at master · OKCoin/rest · GitHub为了方便起见,我们新建了一个叫做“WeQuantStrategy”的项目,并在该项目下新建了huobi和okcoin两个package,将上面的API Demon中的代码分别导入这两个package。
(1). 基于配置的便捷性考虑,将ACCESS_KEY,SECRET_KEY以及HUOBI_SERVICE_API放入一个特定的Config.py文件。
Okcoin的目录文件按类似办法处理。 调试执行huobi目录下的HuobiMain.py以及okcoin目录下的Client.py,确保实盘已经接通。
(2). 新建两个目录:log和data,分别用来存储日志和持仓记录。
(3). 新建package:liveStrategyEngine,并将BanZhuan.py拷贝至该目录下。
(4). 搬砖核心代码BanZhuan.py的执行逻辑如下:
核心逻辑的代码如下:
我们可以看到,套利的quantity小于交易所要求的最低交易数量时,程序是不会执行接下来的搬砖逻辑的。
另外,程序是先处理卖单,再处理买单,理由是,比特币是浮动资产,先变现再购入浮动资产是一种最优的短时期仓位控制方法。
为了保证两个单子的成交数量是一样的,搬砖逻辑在执行买单前,需要拿到前面卖单的执行结果,然后根据该结果来设置需要买的数量。
执行结果展示:
以上没有执行搬砖逻辑,是因为本帐号在火币的比特币数量为零。为了调试该程序,我们到火币平台(比特币交易平台)上去购买一些比特币,再次启动该搬砖程序后,效果如下:
搬砖策略执行结果如下:
我们看到,就在短短的时间内,我们通过在火币网上卖0.06个比特币,在okcoin上买0.06个比特币,就盈利298.32-297.68 = 0.54元
实际上,这个策略可以全天候开启,目前火币网和okcoin的价差还是稳定存在着的,也就意味着这个策略可以全天候帮我们挣钱!
三、币值出现波动,如何对冲
我们采用在BitVC(http://bitvc.com)上做空比特币期货的方式,对冲掉了底仓BTC的头寸。也就是说,如果币值大幅下跌,我们还可以从BitVC上的空单交易中获取相应的补偿,从而保护了整个投资组合的收益。
当然,我们还可以火币网上申请BTC杠杆来作为底仓,如果币值大幅下跌,我们可以以非常低的价格买回BTC归还这部分杠杆,从而也能保护整个投资组合的收益。
四、什么时候触发交易所之间的比特币转移
我们的方案是为两个交易所设置BTC最低仓位线,如果任一交易所的BTC仓位触及该最低线,就触发了一次交易所之间的比特币转移和资金转账。转移的结果是两边交易所的币值相等,人民币相等。
五、想要套其他币种(比如莱特币),怎么做?
本交易策略支持多币种,如果要进行莱特币搬砖套利,直接修改Banzhuan.py最底下的代码如下:
if __name__ == "__main__": ''' # btc strat =BanzhuanStrategy(datetime.datetime.now(), 0.8, 1, 0.1, 30,helper.COIN_TYPE_BTC_CNY, dailyExitTime="23:30:00") strat.go() ''' ltcstrat =BanzhuanStrategy(datetime.datetime.now(), 0.8, 1, 0.1, 30, helper.COIN_TYPE_LTC_CNY,dailyExitTime="23:30:00") strat.go()
WeQuant微宽网 - 比特币量化交易/优质策略源码/精准回测/免费实盘,尽在微宽网。一周热门 更多>