MT软件自动运行在VNCServer
这几天在将外汇交易半自动化。
所谓半自动化,是将交易程序简单化,放在远程服务器中,以多个Metatrader来运行。而实际操作则以Tradingview发送买卖命令。
Tradingview只负责入场信号,通过WebHook技术传送至MT,MT则负责损益比、资金管理等等。一台6CPU的远程服务器至少可以运行6-12个MT进程,相当于有6-12个交易员运行指令。
现代科技确实大大提高了生产力,使得外汇交易的闲解有条件完成。
不过需要解决一个技术问题,是保证运行MT软件的服务器一直在运行。
前一段时间觉得VNCServer不太稳定,使用了X2GO。但运行几天发现X2GO缺省状态必须客户端软件一直连线,服务器端才会持续运行。这个有违自动化初衷,安装个X2goDesktopShare可以解决,但此插件太占内存,操作服务器极为不顺畅。
故又回到VNCServer的方式,不过这次打算:
- 一优化性能,令VNCServer少出错
- 二用脚本解决问题,发现VNCServer出错则自动重启,并将MT软件一一运行。
记录于此,以备再起一台服务器增加MT进程。
- 远程主机安装VNCServer、XFCE图形界面、Wine
- 令VNCServer支持客户端的Clipboard。修改
~/.vnc/xstartup
文件
#!/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进程。
6个MT进程通过vncviewer操作流畅,再启动一下htop命令看看服务器负载
Load average 0.96,对于6CPU的服务器而言,只用了1/6的负载,很有可能再加载6个MT也没有问题。
相关文章:
- 2021/11/10 学习的回报率及交易系统资金管理
- 2021/10/20 现代行禅法
- 2021/09/21 从小老头到老小子
- 2021/09/19 行禅四句及知常曰明
- 2021/09/13 读《秘传正阳真人灵宝毕法》

Jesse Lau
网名遁去的一,简称遁一。2012年定居新西兰至今,自由职业者。
本文采用知识共享署名 4.0 国际许可协议进行许可。简而言之,可随意转发转载,转载请注明出处。