背景
我們在 數字資產量化中的三角套利策略 這篇圖文中詳細的介紹了三角套利的原理以及代碼實現。在 進一步完善自動化交易系統 - 02 和 進一步完善自動化交易系統 - 03 中利用配置文件的方法,擴充至七個三角套利模型。
現在的問題是需要把應用程序和配置文件分別存儲在七個不同的文件夾內,需要手動啟動七個程序來運行這七個三角套利的模型,顯得很繁瑣,是否能夠找到一種方式,同時啟動七個模型呢?
技術分析
答案是一定的。程序猿不滿足用戶的需求,還能稱為程序猿麼,雖然用戶就是自己!哈哈!
首先,把三角套利的程序TriangularArbitrage.exe放置在一個專門的文件夾AppFile中。
其次,把配置文件放置在另一個專門的文件夾iniFile中。
再次,修改三角套利的程序,該程序把配置文件的路徑作為參數。這樣,傳入不同的配置文件,既可執行不同的三角套利模型。
最後 ,寫一個啟動程序,該啟動程序的邏輯就是在上面指定的文件夾iniFile中讀取配置文件,根據配置文件的名稱獲取主窗體的名稱,判斷該主窗體是否已經運行,如果正在運行,則結束該主窗體的進程。把讀取的配置文件路徑作為參數調用上面指定文件夾AppFile中的程序,即完成了同時啟動不同三角套利模型的任務。
代碼實現
1. 修改三角套利的程序
private static LSGOINIControlFacade _iniControl; private static string _one; private static string _usdt; private static string _eos; static void Main(string[] args) { string appName = "TriangularArbitrage"; string version = "2019.07.25.01"; string inifileName; if (args.Length == 0) { Console.WriteLine(@"需要輸入配置文件的路徑"); inifileName = Console.ReadLine(); if (File.Exists(inifileName) == false) { Console.WriteLine(@"配置文件不存在!"); Console.ReadLine(); return; } } else { inifileName = args[0]; } _iniControl = new LSGOINIControlFacade(inifileName); string title = _iniControl.GetSetting(appName, "App", "Title", string.Empty); _one = _iniControl.GetSetting(appName, "App", "One", string.Empty); _usdt = _iniControl.GetSetting(appName, "App", "Usdt", string.Empty); _eos = _iniControl.GetSetting(appName, "App", "Eos", string.Empty); if (string.IsNullOrEmpty(title) || string.IsNullOrEmpty(_one) || string.IsNullOrEmpty(_usdt) || string.IsNullOrEmpty(_eos)) { Console.WriteLine(@"讀取配置文件錯誤"); Console.ReadLine(); return; } Console.Title = title; Console.WriteLine(@"三角套利版本號:{0}", version); //... }
2. 完成啟動程序
static void Main(string[] args) { List lstFiles = Directory.GetFiles(@".\iniFile").ToList(); lstFiles = lstFiles.Where(a => Path.GetExtension(a) == ".ini").ToList(); List lstTitle = new List(); for (int i = 0; i < lstFiles.Count; i++) { string title = Path.GetFileName(lstFiles[i]); if (title != null) { int index = title.IndexOf("_Registry", StringComparison.Ordinal); title = title.Substring(0, index)+" 三角套利系統"; lstTitle.Add(title); } } Process[] p = Process.GetProcesses(); for (int i = 0; i < lstTitle.Count; i++) { List lstp = p.Where(a => a.MainWindowTitle == lstTitle[i]).ToList(); if (lstp.Count != 0) { for (int j = 0; j < lstp.Count; j++) { lstp[j].Kill(); } Thread.Sleep(1000); } } for (int i = 0; i < lstFiles.Count; i++) { ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = @".\AppFile\TriangularArbitrage.exe"; startInfo.Arguments = lstFiles[i]; startInfo.WindowStyle = ProcessWindowStyle.Minimized; Process.Start(startInfo); Thread.Sleep(1000); } Console.WriteLine("三角套利程序啟動完畢!"); Console.ReadLine(); }
總結
好了,到此為止,就解決了同時啟動七個模型的問題。提升了啟動三角套利程序的效率,避免了每次都要檢查 多啟動 或者 沒啟動 的問題。今天就到這裡吧,最後放一個三角套利運行結果的截圖,See You!
相關圖文:
- 資料分享:數學建模資料分享 -- 圖論部分
- 資料分享:數學建模資料分享 -- 神經網絡部分
- 如何利用 C# 實現 K 最鄰近算法?
- 如何利用 C# 實現 K-D Tree 結構?
- 如何利用 C# + KDTree 實現 K 最鄰近算法?
- 如何利用 C# 對神經網絡模型進行抽象?
- 如何利用 C# 實現神經網絡的感知器模型?
- 如何利用 C# 實現 Delta 學習規則?
- 如何利用 C# 實現 誤差反向傳播 學習規則?
- 如何利用 C# 爬取帶 Token 驗證的網站數據?
- 如何利用 C# 向 Access 數據庫插入大量數據?
- 如何利用 C# + Python 破解貓眼電影的反爬蟲機制?
經過8年多的發展,LSGO軟件技術團隊在「地理信息系統」、「數據統計分析」、「計算機視覺」等領域積累了豐富的研發經驗,也建立了人才培養的完備體系,由於自己準備在「量化交易」領域精進技能,如果大家對這個領域感興趣可以與我聯繫,加入我們的量化學習群一起學習探討。
在這個領域我已做了以下積累:
策略部分:
- 數字貨幣 One 的投資價值分析
- 數字資產量化中的跨市場套利策略
- 數字資產量化中的同市場套利策略
- 數字資產量化中的網格交易法
- 我們能否效仿李笑來的投資策略?
- 賺錢是剛需,如何正確的交易股票?
數據部分:
- 如何利用 C# 爬取 One 的交易數據?
- 如何利用 C# 爬取 One 持有者返利數據?
- 如何利用 C# 爬取BigOne交易所的公告?
- 如何利用 C# 爬取Gate.io交易所的公告?
- 如何利用 C# 爬取「財報說」中的股票數據?
自動化交易部分:
- 封裝BigOne API:身份驗證
- 封裝BigOne API:獲取賬戶資產
- 封裝BigOne API:訂單系統
- 封裝BigOne API:網格交易法
- 封裝BigOne API:代碼的重構
- 進一步完善自動化交易系統01
- 進一步完善自動化交易系統02
- 進一步完善自動化交易系統03
- 如何開發「股票數據分析軟件」(上)
- 如何開發「股票數據分析軟件」(中)
- 如何開發「股票數據分析軟件」(下)
- 進一步完善「股票數據分析軟件」 - 01
後臺回覆「搜搜搜」,隨機獲取電子資源!
歡迎關注,請掃描二維碼: