程序交易

2018-07-14  本文已影响26人  乐高智慧商业

挖矿交易

为什么会有这样的需要?

我之前做过几年的ios开发,后来看了吴军的《智能时代》,后转岗转为BI,做了几个企业数据中心的搭建工作。

在无锡回苏州的顺风车上。

看着年龄,开着的小哥应该是和我年龄相仿。旅行的过程中讲述了这样的一个故事。

  1. 将老师的女儿拐出来,那年才十几岁。
  2. 什么都不会打过很多工。
  3. 买光盘成本一两块钱,最多一晚卖一两千。
  4. 2013元旦,滴滴亮相无锡,成为第一波滴滴司机。
  5. 在滴滴疯狂补贴用户的时候,套利几百万
  6. 易道用车,冲一块送一块,冲50万送50万,最终易道就是被这样刷单给刷垮。
  7. 只做机场生意,宁愿一天不接单,也要只做机场生意。因为时间久了,在这条路线上,自己账号的权重就会高了,能够被派到好单的概率就大了。

程序交易

为什么说量化这个东西非常有用?

[image:03E22C00-895D-4F3F-89FE-DCE560674B0E-318-00002495E846DBC3/801522DB-E033-4FEF-8CE9-F21566619921.png]

交易了一天

投资的知识都是来自于实践

如何循环的执行

while(True):
    doTicker() #do strategy
    # Sleep(PERIOD * 1000) #wait
    time.sleep(5)

上面的这串代码就会每隔5秒钟执行一次交易。

为什么要设置限制
BigONE Developer API · Documents for BigONE Developer API

目前针对每个独立IP访问限额为: 每5秒钟/500次请求。
针对每个用户账号访问限额为:每小时/2000次请求。
针对量化交易等场景可以联系客服进行配额的调整。

每小时2000次请求限制,不是每小时限制2000次交易(下一个买单,卖单,为两次请求)。

每隔小时3600秒
3600/2000=1.8
1.8秒执行一次

要定时平衡

什么是平衡?

为了方便表述我们就说1个BTC的价格是100USDT,你手里用来程序交易的账号中拥有的资产是1个BTC,100个USDT。

以BTC/USDT交易对为例,平衡的意思就是BTC:USDT=1:1,或是BTC/(BTC+USDT)=50%。

BTC没有过多,USDT也没有过多就是平衡。

为什么出现不平衡的情况?
你下了一个买单,一个卖单,如果两笔都成交,那么两笔交易完之后BTC与USDT的比例还是维持在50%左右。

上面说的是理想的情况,你实际操作的过程中往往会出现的情况是,买单成交了,卖单没成交。

分批买,分批卖
if _p < 0.48:
    print 'begin balance', _p
    # 2% derating ratio per step
    _cny -= (float(_cny) * 0.02)
    if len(_order_book['Bids']) > 0:
        price = float(['Bids'][0]['price'])
        price_s_a = price * 1.000
        price_s_b = price * 1.001
        price_s_c = price * 1.002

        amount_s_a = (float(_cny) * 0.02 / 3) / price_s_a
        amount_s_b = (float(_cny) * 0.02 / 3) / price_s_b
        amount_s_c = (float(_cny) * 0.02 / 3) / price_s_c

    
        transaction = _client.create_order('BTC-USDT', Client.SIDE_BID, str(price_s_a), str(amount_s_a))
        transaction = _client.create_order('BTC-USDT', Client.SIDE_BID, str(price_s_b), str(amount_s_b))
        transaction = _client.create_order('BTC-USDT', Client.SIDE_BID, str(price_s_c), str(amount_s_c))
elif _p > 0.52:
    print 'begin balance', _p
    # 2% derating ratio per step
    _btc -= (float(_btc) * 0.02)
    if len(_order_book['Asks']) > 0:
        price = float(['Bids'][0]['price'])
        price_s_a = price * 1.000
        price_s_b = price * 0.999
        price_s_c = price * 0.998
        transaction = _client.create_order('BTC-USDT', Client.SIDE_ASK, str(price_s_a), '600')
        transaction = _client.create_order('BTC-USDT', Client.SIDE_ASK, str(price_s_b), '600')
        transaction = _client.create_order('BTC-USDT', Client.SIDE_ASK, str(price_s_c), '600')

time.sleep(5)

# # get a list of your orders for a symbol
orders_json = _client.get_orders('BTC-USDT')
orders = orders_json['edges']

if orders is not None:
    for order in orders:
        if order['node']['id'] != _trade_order_id:
            _client.cancel_order(order['node']['id'])

大幕开始

开始买卖

什么时候买?

什么时候卖?

 +---+---+---+---+---+---+
 | P | y | t | h | o | n |
 +---+---+---+---+---+---+
 0   1   2   3   4   5   6
-6  -5  -4  -3  -2  -1

量和交易前世今生

整个课程都是以,BTC/USDT交易对为例

fcoin

代码的细节,

获取账户的余额信息

执行平衡

为什么要执行平衡,为了自己交易效率的最大话

上一篇下一篇

猜你喜欢

热点阅读