文章目录

MT軟件自動運行在VNCServer

2021-11-26 约 912 字 预计阅读 2 分钟

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

所謂半自動化,是將交易程序簡單化,放在遠程服務器中,以多個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也沒有問題。


Tags: 道書

author

Jesse Lau

網名遁去的一,簡稱遁一。2012年定居新西蘭至今,自由職業者。
本文采用知識共享署名 4.0 國際許可協議進行許可。簡而言之,可隨意轉發轉載,轉載請注明出處。


留点评论吧: