MT軟件自動運行在VNCServer

道德經

這幾天在將外彙交易半自動化。

所謂半自動化,是將交易程序簡單化,放在遠程服務器中,以多個Metatrader來運行。而實際操作則以Tradingview發送買賣命令。

Tradingview隻負責入場信號,通過WebHook技術傳送至MT,MT則負責損益比、資金管理等等。一台6CPU的遠程服務器至少可以運行6-12個MT進程,相當於有6-12個交易員運行指令。

現代科技確實大大提高了生產力,使得外彙交易的閑解有條件完成。

不過需要解決一個技術問題,是保證運行MT軟件的服務器一直在運行。

前一段時間覺得VNCServer不太穩定,使用了X2GO。但運行幾天發現X2GO缺省狀態必須客戶端軟件一直連線,服務器端才會持續運行。這個有違自動化初衷,安裝個X2goDesktopShare可以解決,但此插件太占內存,操作服務器極為不順暢。

故又回到VNCServer的方式,不過這次打算:

  • 一優化性能,令VNCServer少出錯
  • 二用腳本解決問題,發現VNCServer出錯則自動重啟,並將MT軟件一一運行。

記錄於此,以備再起一台服務器增加MT進程。

#!/bin/bash
xrdb $HOME/.Xresources
autocutsel -fork
startxfce4 &
  • 關閉服務器Power-saving

    sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

  • 關閉XFCE屏幕保護,Setting–»Screensaver

  • 啟動VNCServer時自動啟動MT軟件,建立~/.config/autostart目錄,新建.desktop文件如lux.desktop文件內容如下:

    [Desktop Entry]
    Encoding=UTF-8
    Version=0.9.4
    Type=Application
    Name=Lux MetaTrader 4
    Comment=MetaTrader 4
    Exec=wine "C:\\Program Files (x86)\\Global Prime - MetaTrader 4\\terminal.exe"
    OnlyShowIn=XFCE;
    StartupNotify=false
    Terminal=false
    Hidden=false
    

  • 建立腳本文件~/vnccheck.sh

    #!/bin/bash
    export USER="joanna"
    SERVICE='Xtightvnc'
     
    if /usr/bin/pgrep $SERVICE > /dev/null
    then
        exit 0
    else
        sudo rm /tmp/.X1-lock
        sudo rm /tmp/.X11-unix/X1
        vncserver
        exit 1
    fi
    #EOF
    

  • 增加crontab任務,每分鍾運行一次

    * * * * * bash -x /home/username/vnccheck.sh >> /home/username/vnc.log 2>&1

驗證成果:

Kill當前的VNCServer,腳本正常運行,並啟動了所有的MT進程。

enter image description here

6個MT進程通過vncviewer操作流暢,再啟動一下htop命令看看服務器負載

enter image description here

Load average 0.96,對於6CPU的服務器而言,隻用了1/6的負載,很有可能再加載6個MT也沒有問題。

本文收錄於專題道德經 · 道書研讀《道德經》八十一章英譯本逐章點評,兼讀《陰符經》《西升經》《天隱子》《坐忘論》《清靜經》等道書,以及修道實踐筆記。

留言討論

Jesse Lau · @jesselaunz

一起交流

文章寫在博客,影片發在 YouTube,日常想法在 𝕏。三處是同一個人、同一條線索。