技術圖文:進一步完善自動化交易系統 - 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 三角套利

以先買入後賣出的方式構造三角套利的路徑:

技術圖文:進一步完善自動化交易系統 - 02

價格表

盈利條件:

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

以先賣出後買入的方式構造三角套利的路徑:

技術圖文:進一步完善自動化交易系統 - 02

價格表

盈利條件:

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

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

用 BTC 替換 EOS,發現 ONE-USDT、ONE-BTC、BTC-USDT 這些交易對全部是存在的。所以也能夠構造出兩條套利路徑:

以先買入後賣出的方式構造三角套利的路徑:

技術圖文:進一步完善自動化交易系統 - 02

價格表

盈利條件不變:

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

以先賣出後買入的方式構造三角套利的路徑:

技術圖文:進一步完善自動化交易系統 - 02

價格表

盈利條件不變:

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

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

用 BTC 替換 USDT,發現 ONE-BTC、ONE-EOS、EOS-BTC 這些交易對全部是存在的。所以也能構造出兩條套利路徑:

以先買入後賣出的方式構造三角套利的路徑:

技術圖文:進一步完善自動化交易系統 - 02

價格表

盈利條件不變:

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

以先賣出後買入的方式構造三角套利的路徑:

技術圖文:進一步完善自動化交易系統 - 02

價格表

盈利條件不變:

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

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

用 BTC 替換 ONE,發現BTC-USDT、EOS-USDT是存在的,而BTC-EOS是不存在的。所以會改變程序的邏輯,這三個交易對需要另外寫代碼來進行套利,這一部分等有時間的時候再來完善。

代碼實現

建立配置文件

 
 ONE_USDT_EOS 三角套利系統
 ONE
 USDT
 EOS
 

  • 以上配置文件對應 “第一種:ONE、USDT、EOS 三角套利”
  • 把EOS修改為BTC則對應“第二種:ONE、USDT、BTC 三角套利”
  • 把USDT修改為BTC則對應“第三種: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三角套利:

技術圖文:進一步完善自動化交易系統 - 02

三角套利

ONE、USDT、BTC三角套利:

技術圖文:進一步完善自動化交易系統 - 02

三角套利

ONE、BTC、EOS三角套利:

技術圖文:進一步完善自動化交易系統 - 02

三角套利

相關圖文

  • 如何利用 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製作自動化交易系統--網格交易法


分享到:


相關文章: