文章目录

MT软件自动运行在VNCServer

2021-11-26 约 910 字 预计阅读 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 国际许可协议进行许可。简而言之,可随意转发转载,转载请注明出处。


留点评论吧: