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


背景

我们在 数字资产量化中的三角套利策略 这篇图文中详细的介绍了三角套利的原理以及代码实现。在 进一步完善自动化交易系统 - 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

后台回复「搜搜搜」,随机获取电子资源!

欢迎关注,请扫描二维码: