技術(shù)圖文:進(jìn)一步完善自動(dòng)化交易系統(tǒng) - 04

背景

我們?cè)?數(shù)字資產(chǎn)量化中的三角套利策略 這篇圖文中詳細(xì)的介紹了三角套利的原理以及代碼實(shí)現(xiàn)。 在 進(jìn)一步完善自動(dòng)化交易系統(tǒng) - 02進(jìn)一步完善自動(dòng)化交易系統(tǒng) - 03 中利用配置文件的方法,擴(kuò)充至七個(gè)三角套利模型。

現(xiàn)在的問(wèn)題是需要把應(yīng)用程序和配置文件分別存儲(chǔ)在七個(gè)不同的文件夾內(nèi),需要手動(dòng)啟動(dòng)七個(gè)程序來(lái)運(yùn)行這七個(gè)三角套利的模型,顯得很繁瑣,是否能夠找到一種方式,同時(shí)啟動(dòng)七個(gè)模型呢?


技術(shù)分析

答案是一定的。程序猿不滿(mǎn)足用戶(hù)的需求,還能稱(chēng)為程序猿么,雖然用戶(hù)就是自己!哈哈!

<b>首先</b>,把三角套利的程序TriangularArbitrage.exe放置在一個(gè)專(zhuān)門(mén)的文件夾AppFile中。

三角套利程序

<b>其次</b>,把配置文件放置在另一個(gè)專(zhuān)門(mén)的文件夾iniFile中。

配置文件

<b>再次</b>,修改三角套利的程序,該程序把配置文件的路徑作為參數(shù)。這樣,傳入不同的配置文件,既可執(zhí)行不同的三角套利模型。

<b>最后</b>,寫(xiě)一個(gè)啟動(dòng)程序,該啟動(dòng)程序的邏輯就是在上面指定的文件夾iniFile中讀取配置文件,根據(jù)配置文件的名稱(chēng)獲取主窗體的名稱(chēng),判斷該主窗體是否已經(jīng)運(yùn)行,如果正在運(yùn)行,則結(jié)束該主窗體的進(jìn)程。把讀取的配置文件路徑作為參數(shù)調(diào)用上面指定文件夾AppFile中的程序,即完成了同時(shí)啟動(dòng)不同三角套利模型的任務(wù)。

啟動(dòng)程序

代碼實(shí)現(xiàn)

<b>1. 修改三角套利的程序</b>

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(@"讀取配置文件錯(cuò)誤");
        Console.ReadLine();
        return;
    }   
    Console.Title = title;
    Console.WriteLine(@"三角套利版本號(hào):{0}", version);
    
    //...
}

<b>2. 完成啟動(dòng)程序</b>

static void Main(string[] args)
{
    List<string> lstFiles = Directory.GetFiles(@".\iniFile").ToList();
    lstFiles = lstFiles.Where(a => Path.GetExtension(a) == ".ini").ToList();

    List<string> lstTitle = new List<string>();

    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)+" 三角套利系統(tǒng)";
            lstTitle.Add(title);
        }
    }

    Process[] p = Process.GetProcesses();
    for (int i = 0; i < lstTitle.Count; i++)
    {
        List<Process> 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("三角套利程序啟動(dòng)完畢!");
    Console.ReadLine();
}

總結(jié)

好了,到此為止,就解決了同時(shí)啟動(dòng)七個(gè)模型的問(wèn)題。提升了啟動(dòng)三角套利程序的效率,避免了每次都要檢查 多啟動(dòng) 或者 沒(méi)啟動(dòng) 的問(wèn)題。今天就到這里吧,最后放一個(gè)三角套利運(yùn)行結(jié)果的截圖,See You!

交易記錄

相關(guān)圖文

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 背景 最初,我們介紹了 如何利用網(wǎng)格交易法對(duì)數(shù)字資產(chǎn)進(jìn)行交易。只要價(jià)格存在波動(dòng),通過(guò)這種方法就能賺取利潤(rùn)。 接著,...
    老馬的程序人生閱讀 541評(píng)論 0 2
  • feisky云計(jì)算、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 4,379評(píng)論 0 5
  • 最聰明的活法不是去幻想外面的世界有多么的精彩,而是以最好的狀態(tài)過(guò)好當(dāng)下的生活,然后以最好的自己自信的走向外面的世界...
    檸檬和西柚er閱讀 591評(píng)論 0 0
  • 為人師表與尊師重道,需要社會(huì)合力 2018年11月8日,安徽亳州一學(xué)生遲到遭老師毆打“打斷四把掃把”之事,...
    菩提明鏡bin閱讀 130評(píng)論 0 0
  • 聽(tīng)了奇跡店長(zhǎng)關(guān)于如何維護(hù)客戶(hù)的課程后,知道了維護(hù)三部曲。 信任-——挖掘需求——實(shí)惠 信任是真誠(chéng)換來(lái)的,對(duì)待客戶(hù)要...
    52e37e500c90閱讀 238評(píng)論 0 0

友情鏈接更多精彩內(nèi)容