数字货币量化交易学习(2):CCXT多平台单币种搬砖(理想化&非实战)

搬砖思想

由于各交易平台之间的价格存在一定的差异性,假设目前你在两个平台的资金情况如下:

OKEX HUOBI
10BTC 10BTC
10000USDT 100000USDT

由于价格波动,假设现在两个平台的BTC/USDT交易对价格如下,为了方便计算,数量均为1BTC

TYPE OKEX HUOBI
ASK 4567 4560
BID 4563 4555

这时候,在HUOBI买入1BTC的同时,在OKEX卖出1BTC,不考虑手续费等情况,交易后的账户资产为:

OKEX HUOBI SUM
9BTC 11BTC 20BTC
14563USDT 5440USDT 20003USDT

可以看出,该操作过后,BTC总资产保持不变,USDT数量增加了3个。但是这个只是理想情况,由于现在程序化交易的成熟度与日俱增,这样的搬砖策略在考虑手续费等情况下已经很难盈利。但是搬砖的思想大抵如此。

基于PYTHON代码实现简单搬砖策略(理想化&非实战)

import ccxt
from pprint import pprint
import time
from numpy import NaN
baseCurrrency='BTC'
aimCurrency='ETH'
pair=aimCurrency+'/'+baseCurrrency
limit=3
highLimit=0.2
lowLimit=0.001
Exchanges=[]
Exchanges.append(ccxt.huobipro())
Exchanges.append(ccxt.lbank())
Exchanges.append(ccxt.zb())
Exchanges.append(ccxt.bittrex())
Exchanges.append(ccxt.bigone())
Exchanges.append(ccxt.bitz())
Names=['火币','lbank','zb','bittrex','bigone','bitz']
bids=[NaN for i in Exchanges]
bidVolum=[NaN for i in Exchanges]
asks=[NaN for i in Exchanges]
askVolum=[NaN for i in Exchanges]
while True:
    for i in range(6):
        try:
            mes=Exchanges[i].fetch_order_book(pair,limit)

            bidPrice=mes['bids'][0][0]
            askPrice=mes['asks'][0][0]
            if bidPrice<highLimit and bidPrice>lowLimit :
                bids[i]=bidPrice
            else:
                bids[i]=NaN
            if askPrice < highLimit and askPrice > lowLimit:
                asks[i] =askPrice
            else:
                asks[i]=NaN
            bidVolum[i]=mes['bids'][0][1]
            askVolum[i]=mes['asks'][0][1]
        except:
            asks[i]=NaN
            bids[i]=NaN
            askVolum[i]=NaN
            bidVolum[i]=NaN
            print(str(Exchanges[i])+'_error')
        sellPrice=max(bids)
        buyPrice=min(asks)
        if sellPrice>buyPrice :
            sellIndex=bids.index(max(bids))
            buyIndex=asks.index(min(asks))
            print('buy in '+Names[buyIndex]+' and sell in '+Names[sellIndex]+' profit='+str(sellPrice-buyPrice))

一点总结

1.目前CCXT支持交易所已经多达三位数,因此要实现对于每一个交易所的价格监控和搬砖策略是几乎不可行的。
2.交易所数量越多,价格监控比较的时间消耗也越多,所以一个好的策略应该是低时延高并发的。
3.目前只是处在一个模拟学习的情况,很多操作都是处于理想化的状态,还没有考虑到订单提交等延迟情况。
4.代码中的计算都是基于1ETH单价计算的,还没有考虑挂单量和账户持仓的量,不过就目前的手续费而言,这种策略盈利可能性为0

你可能感兴趣的:(Blockchain,CCXT,搬砖,数字货币)