有一段时间,区块链特别火爆,而有的人通过虚拟货币交易实现了财务自由。仔细研究后,发现他们用的都是机器人(量化交易)。身为程序员,这个本应该是我的强项啊,于是乎写了几个策略。但当我兴冲冲的把脚本写好,发现浪潮已经过去。这个发财的路已经关闭了。感叹自己后知后觉。但也没有亏什么,起码对量化交易还有个初步的了解。也许有一天,可以用在股票交易上。
trades.py
- 爬取数据,通过交易所的开放API可以取到价格,交易量等信息
- 存入sqlite,以此可以用matplotlib进行画图展示进行分析
为节省开支,每天的信息生成文件,可通过免费的七牛文件服务(10GB)上传。
grid.py
网格交易有很多变种,简单的举个例子。 假设你手里有100 个X币,每个币当前价值100块,且手里还有10000块钱。这时你的仓位是平衡的,50%的X币,50%的法币,资产总额20000块。
当X币上升到110块,仓位就不平衡了,资产总额21000。这个时候以110卖掉500块的币,X币数就成了100-500/110=95.45,法币数额是10500块。
当X币跌回100块,仓位又不平衡了,资产总额(95.45*100)+10500=20045块。这个时候要花掉(10500-20045/2)=477.5元去以100块价格买X币。币的总数变成了95.45+4.775=100.225个X币。
看到没,同样的100块的X币,来回一算计就多了22.5块和0.225个X币。当然,这个还没有扣除交易所手续费。要知道,早期交易所作单是没有手续费的,所以如果这个脚本在17年或更早的时候跑,是非常有利可图的。 脚本中会更复杂一些,以钱包为中心设计了5个状态:
- 深绿(DG,X币价值多于法币,执行卖掉)
- 浅绿(LG,X币价值多于法币,准备卖掉部分X币)
- 白(W,平衡)
- 浅红(LR,X币价值多于法币,准备买入X币)
- 深红(DR,X币价值多于法币,执行买入)
其中LG、LR两个状态起到缓冲的作用,可以提前做单,等待其它人买入或卖出。
deal.py
简单的来说,就是在不同交易所之前低买高卖。但是一定要效率高,甚至要求毫秒级的处理速度,这样才可以抢单。该策略是以吃单为主。
- 使用websocket,这样以最快的速度,响应式的处理。
- 使用异步IO, async。这个在python3 之后才有的功能。
- 同时监听两个交易所的ask与bid,发现满足条件的价差就尝试去抢。
为什么没有继续下去?
也不一定后面不继续。
每种策略都有自身的局限,最关键的是要判断好行情的走势。这个就很难了。 比如网格交易法,这个是有些利润,但是这个最大的问题是在大幅波动的情况下,可能单边挂起,要么手里面全是X币,没有法币。要么就是全是法币,没有X币。这样算法就停止了。
套利的问题是,当时交易所的接口不是很稳定,因为监控行情的接口与下单是两条通路,如果出现滞后就会出现单边交易的情况。
上面这些还是比较初级的。有一段时间还想上增强学习来做交易,不过学习成本比较高。哪天看明白了再补充。
support python3.5 above