当前位置: 首页 > 编程日记 > 正文

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

背景

自己的自动化交易系统起初只有网格交易法一个版本:如何利用网格交易法对数字资产进行交易。后面,加入了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制作自动化交易系统–网格交易法

相关文章:

女士做软件测试的利弊有哪些?

社会在不断的进步&#xff0c;在如今的智能时代&#xff0c;女性独立意识越来越高&#xff0c;很多女性都把重心放在职场上&#xff0c;IT行业出现了越来越多的女性职业者&#xff0c;尤其是软件测试这一块&#xff0c;那么女士做软件测试的利弊有哪些呢?来看看下面的详细介绍…

刻意练习:Python基础 -- Task01. 变量、运算符与数据类型

背景 我们准备利用17天时间&#xff0c;将 Python 基础的刻意练习分为如下任务&#xff1a; Task01&#xff1a;变量、运算符与数据类型&#xff08;1day&#xff09;Task02&#xff1a;条件与循环&#xff08;1day&#xff09;Task03&#xff1a;列表与元组&#xff08;2day…

linux ramdisk与tmpfs的深入分析

一)ramdisk 1)概念 ramdisk就是指使用一部分内存空间来模拟硬盘分区,也就是说ramdisk是一个块设备,要用mkfs格式化,才能真正使用它. .ramdisk在内核2.0/2.2版本就已经支持. .ramdisk设备是它不允许重新声明它的内存空间,所以ramdisk块通常会一直占用空间的内存直到系统重启. .r…

Unique Paths II

注意一个容易犯的错误&#xff1a;判断obstacleGrid是否为1时&#xff0c;else那部分不能少。因为如果不加&#xff0c;就会默认把那些值设置为0。 class Solution { public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int height ob…

零基础java培训如何规划学习路线

学习java的同学越来越多&#xff0c;很多小伙伴都想知道零基础如何学习java?如何安排学习路线&#xff0c;零基础java培训如何规划学习路线?那么针对以上问题&#xff0c;今天小编特意分享这篇Java学习指南&#xff0c;希望对那些想学Java&#xff0c;想零基础快速入门Java有…

CCIE-MPLS基础篇-实验手册

又一部前期JUSTECH&#xff08;南京捷式泰&#xff09;工程师职业发展系列丛书完整拷贝。 MPLS&#xff08;Multi-Protocol Label Switching&#xff09; 目录 1&#xff1a;MPLS 基础实验.... 3 1.1实验拓扑... 3 1.2实验需求&#xff1a;... 3 1.3实验步骤... 3 1.4校验…

[转载]Oracle 11g新特征之形式料理(2)

不可见的索引 您经常感应利诱&#xff0c;索引能否真的有利于用户的盘考&#xff1f;它也许有利于一个盘考&#xff0c;但会影响 10 个其他盘考。索引肯定会对 INSERT 语句形成负面影响&#xff0c;也会执行潜伏的删除和更新操纵&#xff0c;这取决于 WHERE 条件能否在索引中包…

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

背景 在 进一步完善自动化交易系统 - 02 这篇图文中&#xff0c;向大家详细介绍了&#xff0c;满足以下两个条件下&#xff1a; 拥有数字资产&#xff1a;BTC、EOS、USDT、ONEBigOne 提供交易对&#xff1a;ONE-USDT、ONE-EOS、ONE-BTC、EOS-BTC、EOS-USDT、BTC-USDT 我们可…

HTML5培训后好就业吗

HTML5技术在移动互联网行业的发展前景是非常可观的&#xff0c;以至于很多人都非常看好HTML5行业&#xff0c;想要学习HTML5技术的人越来越多&#xff0c;但大家都比较关心HTML5培训后好就业吗?就这个问题我们来看看下面的详细介绍吧。 HTML5培训后好就业吗?首先&#xff0c;…

股市复盘:本周交易数据分析

特别说明&#xff1a; 每周我会统计「股票市场」的数据为大家的投资提供辅助支持&#xff0c;每个人站的角度不同&#xff0c;面对同一份数据得到的观点亦或不同&#xff0c;我只提供数据&#xff0c;不提供观点&#xff0c;欢迎大家在图文下方留言&#xff0c;我们理性探讨。 …

Strategy Analytics:物联网安全令人担忧,成本节约效益也不确定

Strategy Analytics物联网战略研究报告《2016年物联网部署趋势及使用调查》发现&#xff0c;物联网安全问题令人担忧&#xff0c;同时&#xff0c;超过半数企业对物联网带来的成本节约效益也不太确定。56%的受访公司认为&#xff0c;大数据分析是推动物联网部署的首要驱动力。 …

SQLServer中设置XML索引

XML索引分为主XML索引和次XML索引&#xff1b;1.主XML索引&#xff1a;为了完整、一致的表示XML的值&#xff0c;格式&#xff1a;Create PRIMARY XML INDEX indexName ON tableName(columName);2.次XML索引&#xff1a;对于XPath和XQuery表达式&#xff0c;可以使用XML次索引&…

零基础能学好UI设计吗

UI设计在最近几年的发展前景是有目共睹的&#xff0c;越来越多的企业注重用户体验&#xff0c;而UI设计在这一方面是起着非常重要位置的&#xff0c;如今很多人都想要学习UI设计&#xff0c;那么零基础能学好UI设计吗?我们来看看下面的详细介绍。 零基础能学好UI设计吗?如果美…

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

背景 我们在 数字资产量化中的三角套利策略 这篇图文中详细的介绍了三角套利的原理以及代码实现。 在 进一步完善自动化交易系统 - 02 和 进一步完善自动化交易系统 - 03 中利用配置文件的方法&#xff0c;扩充至七个三角套利模型。 现在的问题是需要把应用程序和配置文件分别…

如何成为Android开发高手

(copy来的) 计划按这个步骤去学习很多Android开发者已经度过了初级、中级&#xff0c;如何成为一个Android高手呢? Android123就各个级别的程序员应该掌握哪些内容作为下面分类。 一、初级 1. 拥有娴熟的Java基础&#xff0c;理解设计模式&#xff0c;比如OOP语言的工厂模式要…

哪些物联网应用最适合采用雾计算?

有时在做出判断时真的是要靠自己&#xff0c;让别人为你指出方向是不可行的。 许多物联网系统所面临的情景与此相同。集中处理大量传感器数据会减慢决策&#xff0c;并增加带宽需求。而做出明智的决策最好靠近源头。 哪些决策应该靠近网络边缘&#xff0c;哪些应该靠近中心&…

学习web前端你必须要了解的主流框架!

如今的前端已经不再像以前一样就是简单的写写页面和调调样式而已&#xff0c;现在的前端越来越复杂&#xff0c;知识点越来越丰富。 要做WEB前端&#xff0c;就需要知道前端到底是什么&#xff0c;需要学习那些知识;前端至少要懂的三个部分&#xff1a;HTML&#xff0c;CSS&…

技术图文:如何实现汉诺塔问题?

背景 最近在辅导小孩们学习编程&#xff0c;在介绍函数递归时&#xff0c;最典型的就是汉诺塔问题了。 我在这里总结一下&#xff0c;以方便大家的学习。 汉诺塔问题源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子&#xff0c;在一根柱子上从下往上…

Unity----Scene加载问题

Unity官方提供了4种加载场景&#xff08;scene&#xff09;的方法&#xff0c;分别是&#xff1a; 1. Application.LoadLevel()&#xff1a;同步加载 2. Application.LoadLevelAsync():异步加载 3. Application.LoadLevelAddictive():同步附加式加载 4. Application.LoadLevelA…

基于Google Reader的个人知识管理方案

来源月光博客:http://www.williamlong.info/archives/2172.html. 先前我写的《基于Dropbox的个人知识管理平台》讲述了使用Dropbox在个人知识管理的保存知识方面的技巧&#xff0c;而个人知识管理的另一个重要环节是获取知识&#xff0c;今天月光博客就介绍一下如何通过Google …

学习java一定会用到的应用软件

想要成为一名合格的java程序猿&#xff0c;基础知识一定是要非常牢固的&#xff0c;扎实的基本功不仅可以快速的吸收新的知识&#xff0c;也会避开一些基本的语法错误&#xff0c;为了帮助程序员们减少一点工作压力&#xff0c;小编在此汇总了一些各大网络平台上推荐的程序员必…

LeetCode实战:两数之和

题目英文 Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume that each input would have exactly one solution, and you may not use the same element twice. Example: Given nums [2, 7, 1…

忘记mysql 密码的取回方法

如果 MySQL 正在运行&#xff0c;首先杀之&#xff1a; killall -TERM mysqld(如果是windows,直接调出进程管理器,结束之) 以安全模式启动 MySQL &#xff1a;/usr/bin/safe_mysqld --skip-grant-tables & (windows 下 mysql安装所以盘/mysql/bin/safe_mysqld --skip-grant…

《社交网站界面设计(原书第2版)》——2.13 不要中断电子邮件

2.13 不要中断电子邮件 如果你将电子邮件作为广播媒介&#xff08;例如&#xff0c;发送提醒或通知&#xff09;却不让用户回复他们收到的消息&#xff0c;就比较差劲了。你也没理由不处理这些回复&#xff0c;你可以把这些回复当作通知转发给正确的收件人。这需要你在方便沟通…

学习Python遇到的热门问题整理

什么是Python?它可以做什么用?学习Python还是java?哪个比较好?Python适用于哪些场景?关于python&#xff0c;你是不是还有很多问题?那今天小编就来给大家答疑解惑了&#xff0c;给大家整理了学习Python遇到的热门问题&#xff0c;看完这篇文章&#xff0c;你会对Python有…

WinRM设置信任主机

启动https需要证书&#xff0c;所以只能用信任主机的方式。适应没有域的环境。 enable-psremoting winrm s winrm/config/client {TrustedHosts"XXX.XXX.XXX.XXX"} 转载于:https://www.cnblogs.com/flysoft/archive/2011/03/12/1982494.html

LeetCode实战:快乐数

题目英文 Write an algorithm to determine if a number is “happy”. A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until t…

idea的优秀博客推荐

2019独角兽企业重金招聘Python工程师标准>>> http://blog.csdn.net/qq_27093465/article/details/63683873 http://www.cnblogs.com/whc321/p/5669804.html 转载于:https://my.oschina.net/u/3621360/blog/1528716

花钱参加UI设计培训值得吗?

最近有很多人都想要学习UI设计&#xff0c;大家都比较看好UI设计行业的好前景&#xff0c;高薪资&#xff0c;那么花钱参加UI设计培训值得吗?这是目前很多人都比较关心的问题&#xff0c;下面小编就为大家做下详细的介绍。 ​花钱参加UI设计培训值得吗?对于零基础或者转行的人…

零基础自学用Python 3开发网络爬虫(一)

原文出处&#xff1a; Jecvay Notes &#xff08;Jecvay&#xff09; 由于本学期好多神都选了Cisco网络课, 而我这等弱渣没选, 去蹭了一节发现讲的内容虽然我不懂但是还是无爱. 我想既然都本科就出来工作还是按照自己爱好来点技能吧, 于是我就不去了. 一个人在宿舍没有点计划…