自動で取引やってみたいので色々と試行錯誤してなんとかなったかな?
最初からここ見てやればよかったのかもしれないけど、自分でMT4をインストールした後に見つけたの後の祭り。VPNが再起動したときのMT4自動起動にこんなに苦労するとは思わなかった。WindowsServerでMT4を実行していた時は楽だったなぁ・・・
Ubuntu 20.04.4 LTSで2022/07/29時の情報なのと、インストール時がCUIベースだったので、状況が違うとやり方が違うかもしれないです。デスクトップには軽量なのが良いと思い、lightdm,xfce4にした。またVNCは暗号化がかからない(やりようによってはできるみたい)し、PC側にもいろいろインストールしないといけないので、RDPでやることにした。実際インストールしてみて、RDPでログインしてMT4を実行するまでには、そんなに苦労しなかった。
MT5をインストールしとけよって話があるが、購入していたEAがMT4用だったのとMT5で使えるかわからない不安があったのでMT4をインストールした。またUbuntu22では公式スクリプトがうまく動かなかったので20にしてから再度実行している。
さて、MT4をどう自動起動させるかだが、結局vncserverを入れることとなった。MT4を起動するのにDISPLAY変数が決まってないと動かいのだが、どう頑張ってもxfce4を自動起動することができなかった。vncserverを自動起動しておくとxfce4まで起動できるので、MT4を自動起動するスクリプトも自動で実行することができる。
基本的にはここのやり方を真似させてもらった。xrdpとVNCの連携で設定をみつけるまで苦労したのは、/etc/xrdp/xrdp.iniの[Xvnc]内のportをvncserverのディスプレイ番号に合わせることでした。
/etc/xrdp/xrdp.ini
[Xvnc]
name=Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=5910 ←DISPLAY:10なら5900 + 10 で5910にする
#port=-1
vncserverの自動起動を下記のようにしました。
/etc/systemd/system/vncserver@:10.service
[Unit]
Description=VNC
After=syslog.target network.target
[Service]
Type=forking
User=ubuntu
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver %i -geometry 1280x1024 -depth 16 -alwaysshared -localhost -nolisten tcp
ExecStop=/usr/bin/vncserver -kill %i
[Install]
WantedBy=multi-user.target
自動起動用のスクリプトstartMt4.shはこんな感じにして、chmod +x しています。
/home/ubuntu/startMt4.sh
#!/bin/sh
export DISPLAY=:10
export WINEPREFIX="/home/ubuntu/.mt4"
nohup /bin/wine start /b /d "/home/ubuntu/.mt4/dosdevices/c:/Program Files (x86)/Axiory MetaTrader 4" "C:/users/Public/Desktop/Axiory MetaTrader 4.lnk" >> ~/wine.log 2>&1
そのスクリプトを起動時に実行するのはcrontab -eで下記を設定。
PATH="/bin:/usr/bin:/usr/local/bin:$HOME/bin"
@reboot /home/ubuntu/startMt4.sh
以上
コメント