程序交易

挖矿交易

为什么会有这样的需要?

我之前做过几年的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]

交易了一天

  • 需要的账号没有提前做好实名认证
  • 一开始1.5ETH刷速度太慢,耽误了时间
  • 左手倒右手交易,挂比最低价低一个单位的价挂卖单,然后以最低价,挂买单,这样能够买到自己手里的单。
  • 刷单的时候只需要关注,自己挂的单是否是最低价,就可以。
  • 账号之间的转账,在深度够的情况下,可以全部转换成ETH转账。
  • 风险在:以高价买入大量代币之后,在交易比赛快要结束的时候出现大跌,这样急于将手中的代币出手,会蒙受损失。
  • 站着交易,状态好,精力集中,颈肩不疼
  • 星巴克的冰萃咖啡太苦,喝了一上午才喝完(超大杯)。下次还是喝茶吧。
  • 高频交易网速很关键。买单卖单都在一瞬间的事情,任何延迟都要花费多余的精力去平衡账号资金和代币的比例。
  • 刷单不是人干的事情,继续写量化软件吧。

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

如何循环的执行

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

代码的细节,

获取账户的余额信息

执行平衡

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

你可能感兴趣的:(程序交易)