美文网首页
程序交易

程序交易

作者: 乐高智慧商业 | 来源:发表于2018-07-14 21:27 被阅读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]

    交易了一天

    • 需要的账号没有提前做好实名认证
    • 一开始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

    代码的细节,

    获取账户的余额信息

    执行平衡

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

    相关文章

      网友评论

          本文标题:程序交易

          本文链接:https://www.haomeiwen.com/subject/zpqupftx.html