币圈搬砖、数字货币量化套利,从入门到实战(六)三角搬砖

往期回顾:
币圈搬砖,从入门到实战(一)常见的几种搬砖方式
币圈搬砖,从入门到实战(二)工具与准备篇
币圈搬砖,从入门到实战(三)法币搬砖
币圈搬砖,从入门到实战(四)ETH搬砖
币圈搬砖,从入门到实战(五)自动对冲搬砖

三角套利

三角搬砖,指在一个交易所内三种币之间的搬砖

举例说明:
在币安交易所,既有EOS/BTC交易对,也有EOS/ETH交易对。

当EOS/BTC的价格(折合人民币的价格)大于EOS/ETH的价格(折合人民币的价格)时,假设:EOS/BTC 的价格是 41元,EOS/ETH 的价格是 40元。

经过下面三步操作即可实现三角套利:

  1. 用ETH以40元的价格买入10个EOS,价值400元;
  2. 将10个EOS以41元的价格换成BTC,得到价值410元的BTC;
  3. 将410元的BTC换成ETH,得到价值410元的ETH,盈利10元。

三角套利需要注意的点:

  1. 一定要考虑手续费,因为一共有3次交易;
  2. 要将价格全部换算成统一的单位,可以是RMB,也可以是BTC或者ETH。

自动三角套利

把上述的步骤写成程序,让程序不休不眠的帮你套利。这个程序主要有两方面的内容:

  1. 查价
  2. 交易

同样,简易的模型代码很简单,但是要做到稳定盈利也不是那么容易,需要考虑很多方面的内容。下面贴一段我之前写的查价的代码,作为写代码的战5渣,大家随意感受一下就好了,你写的肯定比我的好。

from binance.client import Client

api_key = ""
api_secret = ""

client = Client(api_key, api_secret)

coin = "XRP"


def check():
    # 获取X-ETH数量、价格
    x_eth_depth = client.get_order_book(symbol= coin+'ETH')

    # asks 要卖的人 我们对他的买  需要低价       【买入】
    x_eth_price = x_eth_depth["asks"][0][0]
    x_eth_num = x_eth_depth["asks"][0][1]

    # print("X-ETH价格:{}".format(x_eth_price))
    # print("X-ETH数量:{}".format(x_eth_num))


    # 获取X-BTC数量、价格
    x_btc_depth = client.get_order_book(symbol= coin+'BTC')

    # bids 要买的人 我们对他是卖  需要高价     【卖出】
    x_btc_price = x_btc_depth["bids"][0][0]
    x_btc_num = x_btc_depth["bids"][0][1]

    # print("X-BTC价格:{}".format(x_btc_price))
    # print("X-BTC数量:{}".format(x_btc_num))


    # 获取 ETH - BTC数量、价格,  ETH 需要买入    【买入】
    eth_btc_depth = client.get_order_book(symbol="ETHBTC")

    eth_btc_price = eth_btc_depth["asks"][0][0]
    eth_btc_num = eth_btc_depth["asks"][0][1]

    # print("ETH-BTC价格.{}".format(eth_btc_price))
    # print("ETH-BTC数量.{}".format(eth_btc_num))


    # 比较差价
    x_btc_price_2 = float(x_eth_price) * float(eth_btc_price)

    diff_price = float(x_btc_price) - x_btc_price_2
    # print(diff_price)
    # print(x_btc_price_2)

    diff_price_rate = diff_price/float(x_btc_price)

    # print(diff_price_rate)

    if(diff_price_rate > 0.005):
    #     print("有差价啦:{}".format(diff_price))
        print("情况1价差:{:.2%}".format(diff_price_rate))
        add_record(diff_price_rate)



    # 另一种方向
    # 获取X-ETH数量、价格
    x_eth_depth = client.get_order_book(symbol= coin+'ETH')

    #      【卖出】
    x_eth_price = x_eth_depth["bids"][0][0]
    x_eth_num = x_eth_depth["bids"][0][1]

    # print("X-ETH价格:{}".format(x_eth_price))
    # print("X-ETH数量:{}".format(x_eth_num))


    # 获取X-BTC数量、价格
    x_btc_depth = client.get_order_book(symbol= coin+'BTC')

    #      【买入】
    x_btc_price = x_btc_depth["asks"][0][0]
    x_btc_num = x_btc_depth["asks"][0][1]

    # print("X-BTC价格:{}".format(x_btc_price))
    # print("X-BTC数量:{}".format(x_btc_num))


    #     【卖出】
    eth_btc_depth = client.get_order_book(symbol="ETHBTC")

    eth_btc_price = eth_btc_depth["bids"][0][0]
    eth_btc_num = eth_btc_depth["bids"][0][1]

    # print("ETH-BTC价格.{}".format(eth_btc_price))
    # print("ETH-BTC数量.{}".format(eth_btc_num))


    # 比较差价
    x_btc_price_2 = float(x_eth_price) * float(eth_btc_price)

    diff_price2 = x_btc_price_2 - float(x_btc_price)

    diff_price2_rate = diff_price2/x_btc_price_2

    if diff_price2_rate > 0.005:
    #     print("有差价啦:{}".format(diff_price))
        print("情况2价差:{:.2%}".format(diff_price2_rate))
        add_record(diff_price2_rate)


# 计算数量


#交易

if __name__ == '__main__':
    while(1):
        try:
            check()
            # print("hello")
        except Exception as e:
            # print(e)
            pass

交流微信:15313776152

推荐阅读更多精彩内容

  • 众所周知,我们在开发APP时,涉及网络连接的时候,都会想着提前判断一下当前的网络连接状态,如果没有网络,就不再请求...
    韩七夏阅读 234评论 0 2
  • 时光总是太匆匆,想想这一年有高兴、挫败、迷茫。一切还来不及改变,转眼就又到了新的一年。 近来好事颇多,有同学结婚了...
    Baby_fly阅读 39评论 0 0
  • “凉皮是一种凉拌着吃、口感绝佳的西北面食小吃。调好的凉皮,皮子白里透亮、面筋因为吸附酱油而泛黄、黄瓜丝现着绿、辣椒...
    美闻天下阅读 99评论 0 1
  • 如果 有来世的话 奈何桥相遇 我娶你为妻 可好 如果 有下辈子吧 轮回路相见 做我的红颜 行不 爱上你,无法自拔 ...
    北方的青鸟阅读 27评论 0 2