背景

自己的自动化交易系统起初只有网格交易法一个版本:如何利用网格交易法对数字资产进行交易。后面,加入了ONE、USDT、EOS的三角套利版本:如何通过三角套利来交易数字资产。接着,发现三角套利的个别订单在未全部成交的情况下被撤单了,所以对自己的自动化交易系统进行改进修改了这个Bug,对未完成交易而被撤单的订单,从新挂单。也算是第三个版本了:进一步完善自动化交易系统。

今天,我们继续完善这个自动化交易系统,争取更多的盈利。在 如何利用网格交易法对数字资产进行交易 这篇图文中,我们证明 ONE、USDT、EOS 三角套利路径是存在的,而我手中还有 BTC,现在需要解决的问题就是任取三个数字资产进行组合,寻找是否仍有其它的套利路径存在?

组合方式无外乎三种途径:把上面的 EOS 换成 BTC(ONE、USDT、BTC)、把上面的 USDT 换成 BTC(ONE、BTC、EOS),把上面的 ONE 换成 BTC(BTC、USDT、EOS)。这里面有一个约束条件,不能修改以前代码的逻辑,这样我前面写的代码就会支持更多的三角套利路径。


技术分析

拥有的数字资产:BTC、EOS、USDT、ONE

BigOne 提供的交易对:ONE-USDT、ONE-EOS、ONE-BTC、EOS-BTC、EOS-USDT、BTC-USDT

第一种:ONE、USDT、EOS 三角套利

以先买入后卖出的方式构造三角套利的路径

盈利条件:

(Q2 × Q3 × 0.999^3) ÷ Q1 > 1.0

以先卖出后买入的方式构造三角套利的路径

盈利条件:

(P1 × 0.999^3) ÷ (P2 × P3) > 1.0

第二种:ONE、USDT、BTC 三角套利

用 BTC 替换 EOS,发现 ONE-USDT、ONE-BTC、BTC-USDT 这些交易对全部是存在的。所以也能够构造出两条套利路径:

以先买入后卖出的方式构造三角套利的路径

盈利条件不变:

(Q2 × Q3 × 0.999^3) ÷ Q1 > 1.0

以先卖出后买入的方式构造三角套利的路径

盈利条件不变:

(P1 × 0.999^3) ÷ (P2 × P3) > 1.0

第三种:ONE、BTC、EOS 三角套利

用 BTC 替换 USDT,发现 ONE-BTC、ONE-EOS、EOS-BTC 这些交易对全部是存在的。所以也能构造出两条套利路径:

以先买入后卖出的方式构造三角套利的路径

盈利条件不变:

(Q2 × Q3 × 0.999^3) ÷ Q1 > 1.0

以先卖出后买入的方式构造三角套利的路径

盈利条件不变:

(P1 × 0.999^3) ÷ (P2 × P3) > 1.0

第四种:BTC、USDT、EOS 三角套利

用 BTC 替换 ONE,发现BTC-USDT、EOS-USDT是存在的,而BTC-EOS是不存在的。所以会改变程序的逻辑,这三个交易对需要另外写代码来进行套利,这一部分等有时间的时候再来完善。


代码实现

建立配置文件

<TriangularArbitrage><App><Title>ONE_USDT_EOS 三角套利系统</Title><One>ONE</One><Usdt>USDT</Usdt><Eos>EOS</Eos></App>
</TriangularArbitrage>
  • 以上配置文件对应 “第一种:ONE、USDT、EOS 三角套利”
  • <Eos>EOS</Eos>修改为<Eos>EOS</Eos>则对应“第二种:ONE、USDT、BTC 三角套利”
  • <Usdt>USDT</Usdt>修改为<Usdt>BTC</Usdt>则对应“第三种:ONE、BTC、EOS 三角套利”

读取配置文件

private static LSGOINIControlFacade _iniControl = new LSGOINIControlFacade();
private static string _one;
private static string _usdt;
private static string _eos;
private static string _oneUsdt;
private static string _oneEos;
private static string _eosUsdt;

变量_iniControl为读取 XML 文件的对象。GetSetting()为读取 XML 文件中某个节点数据的方法。变量_one_usdt_eos存储三角套利所用的三种数字资产,_oneUsdt_oneEos_eosUsdt存储三种交易对。

由于这些变量的值全部来自配置文件,而前三种套利的逻辑是一致的,所以只需对配置文件进行对应修改,就能实现一份代码操作多种三角套利。代码如下:

string appName = "TriangularArbitrage";
string version = "2019.07.18.02";
string title = _iniControl.GetSetting(appName, "App", "Title");
_one = _iniControl.GetSetting(appName, "App", "One");
_usdt = _iniControl.GetSetting(appName, "App", "Usdt");
_eos = _iniControl.GetSetting(appName, "App", "Eos");
_oneUsdt = _one + "-" + _usdt;
_oneEos = _one + "-" + _eos;
_eosUsdt = _eos + "-" + _usdt;
Console.Title = title;
Console.WriteLine(@"三角套利版本号:{0}", version);

总结

到此为止,今天的介绍就结束了。

希望我摸索的经验能够对大家有所帮助,最后来看看程序运行的截图。See You!

ONE、USDT、EOS三角套利:

ONE、USDT、BTC三角套利:

ONE、BTC、EOS三角套利:


相关图文

  • 如何利用 C# 实现 K 最邻近算法?
  • 如何利用 C# 实现 K-D Tree 结构?
  • 如何利用 C# + KDTree 实现 K 最邻近算法?
  • 如何利用 C# 对神经网络模型进行抽象?
  • 如何利用 C# 实现神经网络的感知器模型?
  • 如何利用 C# 实现 Delta 学习规则?
  • 如何利用 C# 爬取带 Token 验证的网站数据?
  • 如何利用 C# 向 Access 数据库插入大量数据?
  • 如何利用 C# 开发「桌面版百度翻译」软件!
  • 如何利用 C# 开发「股票数据分析软件」(上)
  • 如何利用 C# 开发「股票数据分析软件」(中)
  • 如何利用 C# 开发「股票数据分析软件」(下)
  • 如何利用 C# 爬取「财报说」中的股票数据?
  • 如何利用 C# 爬取 One 持有者返利数据!
  • 如何利用 C# 爬取Gate.io交易所的公告!
  • 如何利用 C# 爬取BigOne交易所的公告!
  • 如何利用 C# 爬取 ONE 的交易数据?
  • 如何利用 C# 爬取「猫眼电影:热映口碑榜」及对应影片信息!
  • 如何利用 C# 爬取「猫眼电影专业版:票房」数据!
  • 如何利用 C# 爬取「猫眼电影:最受期待榜」及对应影片信息!
  • 如何利用 C# 爬取「猫眼电影:国内票房榜」及对应影片信息!
  • 如何利用 C# + Python 破解猫眼电影的反爬虫机制?
  • 如何进行代码的重构?以封装 BigOne API 为例
  • 如何利用BigOne的API制作自动化交易系统 – 身份验证
  • 如何利用BigOne的API制作自动化交易系统 – 获取账户资产
  • 如何利用BigOne的API制作自动化交易系统 – 订单系统
  • 如何利用BigOne的API制作自动化交易系统–网格交易法

技术图文:进一步完善自动化交易系统 - 02相关推荐

  1. 技术图文:进一步完善自动化交易系统 - 04

    背景 我们在 数字资产量化中的三角套利策略 这篇图文中详细的介绍了三角套利的原理以及代码实现. 在 进一步完善自动化交易系统 - 02 和 进一步完善自动化交易系统 - 03 中利用配置文件的方法,扩 ...

  2. 技术图文:进一步完善自动化交易系统 - 03

    背景 在 进一步完善自动化交易系统 - 02 这篇图文中,向大家详细介绍了,满足以下两个条件下: 拥有数字资产:BTC.EOS.USDT.ONE BigOne 提供交易对:ONE-USDT.ONE-E ...

  3. 技术图文:进一步完善自动化交易系统 - 01

    背景 最初,我们介绍了 如何利用网格交易法对数字资产进行交易.只要价格存在波动,通过这种方法就能赚取利润. 接着,我们介绍了 如何通过三角套利来交易数字资产.只要三种数字资产,两两存在交易对,就可以建 ...

  4. 技术图文:如何利用BigOne的API制作自动化交易系统 -- 获取账户资产

    背景 前几天我们介绍了如何使用 BigONE Developer API V2 来获取身份令牌的方法「如何利用BigOne的API制作自动化交易系统 – 身份验证」.一旦获取了身份令牌,我们就可以在网 ...

  5. 技术图文:如何利用BigOne的API制作自动化交易系统 -- 身份验证

    背景 最近,自己在技术精进方向上有所犹豫,是往"网络渗透"的方向走呢?还是往"量化交易"的方向走? 如果选择精进"网络渗透",就需要学习各种 ...

  6. 技术图文:如何利用BigOne的API制作自动化交易系统--网格交易法

    背景 前面,通过图文 如何利用 C# 爬取 ONE 的交易数据? 向大家介绍了如何爬取在 BigOne 上线的数字资产的交易数据. 其次,通过图文 如何利用BigOne的API制作自动化交易系统 – ...

  7. 技术图文:如何利用BigOne的API制作自动化交易系统 -- 订单系统

    背景 前面几天,我们一起封装了 BigONE 提供的"身份验证"与"资产账户"部分的 API. 如何利用BigOne的API制作自动化交易系统 – 身份验证 如 ...

  8. 技术图文:如何利用 C# 实现 误差反向传播 学习规则?

    背景 我们在 如何利用 C# 对神经网络模型进行抽象? 中完成了神经网络的抽象结构: 三个接口:激活函数.有监督学习.无监督学习 三个抽象类:神经元.网络层.网络拓扑 我们在 如何利用 C# 实现神经 ...

  9. 技术图文:如何利用C# + Echarts 绘制「堆叠条形图」?

    背景 前几天,我们介绍了 如何利用C# + Echarts 绘制 Bar Simple?,原以为把 Echarts 封装到这种程度就可以完成当前任务了. 可是,把软件原型提交给对方时,发现对方更希望& ...

最新文章

  1. Pokémon AI,使用DALL-E生成神奇宝贝图鉴
  2. Could not find com.android.support.constraint:constraint-layout的问题解决
  3. UIGestureRecognizer学习笔记
  4. 互联网1分钟 |1114
  5. 面趣 | 据说这道烧脑的微软面试题很奇葩,你来试试?
  6. 往mysql数据库中存当前日期_在MySQL数据库中存储日期的最简单方法是什么?
  7. 挖掘频繁模式、关联和Apriori算法
  8. 根据不同条件查询_刑事立案要符合哪些条件,怎么查看立案没有
  9. Android学习总结(1)——好的 Android 开发习惯
  10. wex5 java_[Java教程]WEX5中ajax跨域访问的几种方式
  11. Postman下载使用
  12. 软件设计师中级-数据流图(DFD)
  13. 算法竞赛入门经典 习题3-2 分子量 Molar Mass
  14. excel文件无法打印提示内存不足_Mac应用程序无法打开提示不明开发者或文件损坏的处理方法
  15. 向下兼容性格什么意思_相处特别舒服,可能是对方情商在向下兼容你
  16. 东南大学 通信工程/电子信息工程 院校分析 通信保研面试重点问题
  17. Keystone安装配置
  18. 倾情推荐:金枝欲孽-3G版
  19. adm浏览器识别为linux,QQ浏览器Linux版qqbrowserlinux_1.0.0-1_amd64.deb能正常使用
  20. C语言Hello world代码

热门文章

  1. java web dao_JavaWeb项目,DAO应该怎么写?
  2. linux 565显示格式,RGB565转BMP格式 C语言程序
  3. PAT(甲级)2021年春季考试 7-4 Recycling of Shared Bicycles
  4. 不使用任何框架实现CNN网络
  5. java 简单万年历_JAVA实现的简单万年历代码
  6. Python培训就业方向有哪些
  7. MySQL数据库高可用集群搭建-PXC集群部署
  8. GDB 调试 Mysql 实战(二)GDB 调试打印
  9. C#线程同步的几种方法
  10. Gradle入门系列(4):创建二进制发布版本