見出し画像

MetaTraderをリモート運用するには その1

作成日:2024/12/09
更新日:2024/12/17


はじめに

MetaTraderでEAを使い始めると常時稼働したくなります。MetaTraderを常時稼働する方法には、「VPSを使う」あるいは「自前のWindows PC上で稼働させる」の2つがあると思います。

自前のWindows PC(以下、PC)上で稼働させる場合は注意してください。一般のPCは24時間連続運転×365日を推奨していません。適度にPCを休止することが必要です。

本記事では、「自前 PC上で稼働させる」を始めるときの以下の点について紹介します。尚、PCはWindows11を対象としています。

  1. Chromeリモートデスクトップを選択した理由

  2. Chromeリモートデスクトップのインストール

  3. USキーボードの問題

  4. PC起動時の通知

  5. PCを自動で定期的に休止・復帰させる方法(次回の記事)

自前PCで運用することを決定した理由は、記事の最後に記載しました。興味がある方はご覧ください。

1.Chromeリモートデスクトップを選択した理由

MetaTraderが稼働しているPCを遠隔操作するには、リモートアクセスツールを使います。勿論、外出先からも利用できることが必須です。無償で利用できる代表的なツールには、「TeamViewer」「Chromeリモート デスクトップ」「AnyDesk」がありますが、結論から言うと「Chromeリモート デスクトップ」を使うことにしました。

TeamViewerは、過去に利用したことがあります。しかし、個人利用にもかかわらず商用利用と誤判定されて、ロック解除申請が必要になることが3回ほど続いたので断念しました。使い勝手はよかっただけに残念です。

AnyDeskも検討しましたが、「パスワードの侵害、盗まれた証明書の悪用、サプライチェーン攻撃、 RBIマルウェアのリスク」などの危険性があるようなので却下しました。

結局、Chromeリモートデスクトップに落ち着いています。

2.Chromeリモートデスクトップのインストール

Google Chrome ヘルプセンターの「Chrome リモート デスクトップを使って他のパソコンにアクセスする」が公式ですが、PC Watch 「簡単便利なChromeリモートデスクトップの使い方。PC/スマホから遠隔操作してみる」の方がわかりやすいです。

これらを参考にしてインストールしてください。Chromeリモートデスクトップは、Android、iPhone、iPadでも利用できます。

3.USキーボードの問題

ローカルマシンとリモートマシンが共に日本語キーボードであれば、特に設定変更は不要です。ローカルマシンはUSキーボード、リモートマシンは日本語キーボードのPCという場合、記号などの入力で困ることが多くあります。意外にMacBookユーザーだと該当することが多いのではないでしょうか。

現状、Windows上の設定だけでは、キーボードレイアウトの変更には再起動が必要になります。運用上、再起動は現実的な方法ではありません。MetaTraderを終了してPCを再起動する、そしてChromeリモートデスクトップのセッションが切断されるので再接続してMetaTraderを起動という、とても面倒な手順になります。困るのは記号の入力くらいなので我慢するという選択肢もありますが、タイプミスするたびにイラッとします。解決策を探したところ、以下の回避策がありました。

  • 言語に「英語(米国)」を追加して入力言語を切り替える。

  • 「ULE4JIS」というフリーソフトを利用する。

「入力言語の切り替え」の設定

キーボードレイアウトの変更をするのではなく、入力言語を切り替えるように設定します。「英語(米国)」に切り替えると、キーボードレイアウトもUSキーボードに切り替わります。「ALT+Shift」のショートカットでも切り替えできます。ChromeリモートデスクトップでmacOSから接続している場合は「Option+Shift」になります。

非常に使い勝手がよいのですが、問題点もあります。言語が英語の場合、日本語変換(入力)ができません。したがって日本語入力を多用するなら、この方法はNGになります。

但し、開発や検証といった通常作業はクライアントのMacBookで行い、サーバーのPCはEAの本番稼働だけに特化させる運用の場合、PCでは日本語入力を多用しないと思います。このようにサーバーとクライントの役割分担によっては、入力言語の切り替えでも十分に対応できるでしょう。

入力言語の切り替えで問題ないなら、次の手順で設定してください。画面例は、Chromeリモートデスクトップを使ってMacBookからPCに接続し設定を行っています。

タスクバーの「スタート」ボタンをクリックします。

スタートメニュー

「設定」をクリックします。

「設定」の画面

左の「時刻と言語」をクリックします。

「時刻と言語」の画面

右側の「言語と地域」をクリックします。

「言語と地域」の画面

「言語の追加」ボタンをクリックします。

言語の選択

「英語(米国)」を選んで、「次へ」ボタンをクリックします。言語の追加が開始しますが、しばらく時間がかかります。

「言語と地域」の画面

言語に「英語(米国)」が追加されました。設定を終了してください。タスクトレイに「J」のアイコンが増えています。「J」アイコンをクリックして英語に切り替えると次のような画面になります。

言語が英語の場合

タスクトレイの「J」アイコンが「ENG」アイコンに切り替わります。

前述しましたが、ショートカットで切り替えることもできます。「ALT+Shift」で切り替えできます。macOSからChromeリモートデスクトップで接続しているときは「Option+Shift」になります。

ULE4JISを利用

ULE4JISは、キーボードレイアウト設定が日本語のままの状態で、US配列をエミュレートしてくれる常駐ソフトです。以下のどちらでもダウンロードできます。

Vector
https://www.vector.co.jp/soft/winnt/util/se476294.html

GitHub
https://github.com/dezz/ULE4JIS/tree/master/publish

インストール方法は、ダウンロードした「Ule4Jis.exe」をスタートアップに登録するだけなので簡単です。インストール方法などは、こちらのサイトに詳しく紹介されています。

問題点は、キーボードフックを利用するアプリケーションと同時に利用すると正しく動作しない可能性があります。また、2009年から更新が停止しているため、今後のOSのバージョンアップで動作しない可能性もあります。加えて、更新履歴を見たところ、動作不安定なバグが潜在しているようです。

とはいえ、私の利用範囲では問題なく動作しているので快適です。ただし、保険で「入力言語の切り替え」もできるようにしています。

ULE2JISの代替は「AutoHotKey」?

補足として、ULE2JISを代替できそうなソフトウェアがあります。「AutoHotKey」というソフトウェアですが、キー変換用のスクリプトファイルによってキーをリマップします。つまり、USキーボード用のスクリプトファイルを準備すれば、ULE2JISと同様のことが可能です。

残念ながら、このソフトウェアの検証はしていません。参考になるサイトの情報提供だけとなります。興味ある方はチャンレンジしてみてください。

以下が本家のサイトです。

インストール方法については、以下のサイトが参考になります。

「[AutoHotKey]インストールと初期設定 – スタートアップに登録する方法」
https://pouhon.net/ahk-install/661/

但し、上記はVer1.1の内容です。2024/12/08時点の最新はVer2であるため、スクリプトファイルの記述方法が変更になっています。

次にUSキーボード用のスクリプトファイルが必要です。以下のサイトを参照すれば、スクリプトファイルを準備できると思います。
「AutoHotKey v2で日本語配列(106/109)→英語配列(101/102)」
https://qiita.com/snytng/items/ec72d5dd892d3a520d6e

日本語入力ON/OFFのキー割り当てを変更

入力言語の切り替えの設定と同様に「設定」>「言語と地域」まで進みます。

「言語と地域」の画面

「言語」の「日本語」の右の方にある「⋯」をクリックして、「言語のオプション」を選びます。

「言語のオプション」の画面

少し下にスクロールすると「キーボード」があります。その中の「Microsoft IME」の右の方にある「⋯」をクリックして、「キーボードオプション」を選びます。

「Microsoft IME」の画面

「キーとタッチのカスタマイズ」をクリックします。

「キーとタッチのカスタマイズ」の画面

「キーの割り当て」の「各キー/キーの組み合わせに好みの機能を割り当てます」をオンにします。そして「Shift+Space」に「IME-オン/オフ」を割り当てます。Mac側の設定の「Ctrl+Space」と日本語入力切り替えが衝突しないように「Shift+Space」にしています。

日本語入力ON/OFFのキー割り当ての変更は以上です。

4.PC起動時の通知

その他で困ったこととして、以下がありました。

  • ChromeリモートデスクトップからPCのWindowsアップデートなどを実行し再起動した場合、一旦接続が切れます。このときPCに再接続できるようになるタイミングがわからない。

  • 知らない間にPCが再起動していてMetaTraderが起動していなかった。

後者はスタートアップでMetaTraderを起動する設定にすれば、EAが決済しないといった致命的なことは回避できます。しかし、再起動した事実の認識は遅れます。

これらについては、PCが起動した際にLINEやDiscordなどにメッセージを送って通知することで対処しました。

タスクスケジューラを使えば、PCが起動したタイミングで通知用のバッチファイルを実行して、メッセージを送信することができます。

設定の手順

以下を手順で行います。

  1. 高速スタートアップを無効にする

  2. 通知用バッチファイルの作成

  3. タスクスケジューラの設定

高速スタートアップを無効にする

まず、高速スタートアップを無効にします。これを有効にしていると、シャットダウン、スリープ、スリープ解除での挙動が不安定になる場合があるため、無効に変更します。(私の場合、通知が届かないことがありました。)

コントロールパネルを起動します。

コントロールパネル(表示方法:カテゴリ)

右上の表示方法を「小さなアイコン」に変更します。

コントロールパネル(表示方法:小さなアイコン)

右下の「電源オプション」をクリックします。

電源オプション

左の「電源ボタンの動作の選択」をクリックします。

シャットダウンの設定

「シャットダウン設定」の領域は入力不可なので、「現在利用可能でない設定を変更します」をクリックします。

この画面で「高速スタートアップを有効にする」の項目が表示されていない場合、休止機能が有効になっていないことが原因かもしれません。高速スタートアップ機能の大部分が休止機能に依存しているためです。

コマンドプロンプトを管理者として起動します。以下を実行して休止機能を有効にします。

powercfg /h on

もう一度、コントロールパネルの起動から試してみてください。

問題ない場合は次に進んでください。

シャットダウンの設定

入力が可能になったので、「高速スタートアップを有効にする」のチェックを外して「変更の保存」をクリックします。

これで高速スタートアップを無効にできました。

通知用バッチファイルの作成

PCからLINEやDiscordに通知を送る方法は、以前の記事の「Windows上のcurlを使って送信」を参照してバッチファイルを作成します。

バッチファイルはどこに置いても構いません。私の場合、以下のようにユーザーのホームフォルダ直下に「bin」というフォルダを作成して、その配下に置いています。

C:\Users\ユーザ名\bin

例えば、Discordに通知を送る方法と組み合わせると以下のようなバッチファイルになります。Webhook URLは、仮で次の文字列としています。「https://discord.com/api/webhooks/12345678910/ABCDEFGHIJKL」
メッセージは「起動しました!」にしています。

cd /d C:\Users\ユーザ名\bin
waitnet.exe remotedesktop.google.com 443 5 10 > logfile_waitnet.txt
curl -v -X POST "https://discord.com/api/webhooks/12345678910/ABCDEFGHIJKL" -H "Content-Type: application/json" -d "{\"content\":\"起動しました!\"}" > logfile_discord.txt 2>&1

2行目の「waitnet.exe」は、ネットワーク接続の確立に時間がかかるときに遅延処理します。以下のサイトを引用して作成しました。「C:\Users\ユーザ名\bin」に置いています。

このサイトはソースコードを公開し、更にWindows標準でのコンパイル方法も記載されていたので非常に助かりました。

タスクスケジューラの設定

タスクスケジューラを使って、システム起動時に作成したバッチファイルを実行するようにします。

タスクスケジューラを起動します。

タスクスケジューラの起動

左の「タスクスケジューラ ライブラリ」をクリックします。続いて、右の「タスクの作成…」をクリックします。

タスクの作成(全般)

「名前」を入力します。例では「Notify System Start」と入力しています。
「ユーザがログオンしているかどうかにかかわらす実行する」をクリックします。管理者権限がなくて実行できない処理がある場合のために、「最上位の特権で実行する」にチェックしておきます。

トリガー条件を指定するために「トリガー」タブをクリックします。

タスクの作成(トリガー)

「新規」ボタンをクリックします。

トリガーの編集

「タスクの開始」は「スタートアップ時」を選択します。「OK」ボタンをクリックします。

タスクの作成(トリガー)

新しいトリガーが作成できました。続けて、起動時に実行するバッチファイルを指定します。「操作」タブをクリックします。

タスクの作成(操作)

「新規」ボタンをクリックします。

新しい操作

「操作」は「プログラムの開始」を選んで、「プログラム/スクリプト」に作成した通知用のバッチファイルを指定します。「OK」ボタンをクリックします。

タスクの作成(操作)

「新しい操作」が作成できました。次は「条件」タブをクリックします。

タスクの作成(条件)

「コンピューターをAC電源で使用している場合のみタスクを開始する」のチェックを外します。

「設定」タブは既定値のままで変更しません。「OK」ボタンをクリックしてください。タスクが作成できました。

タスクスケジューラの設定はこれで終了です。

PCを再起動してみてください。起動完了するとバッチファイルがメッセージを送信します。LINEやDiscordなどに通知が届きます。

ここまでお疲れ様でした。

次回に続く

「4.PC起動時の通知」まで終われば、Chomeリモートデスクトップを使っていて致命的な問題はないと思います。

続けて「5.PCを自動で定期的に休止・復帰させる方法」まで紹介すると、長くなってしまうので次回にします。

つづく…

参考:自前PCで運用することにした理由

通常、私はMacBookを利用していますが、PCも保有しています。ただPCの利用頻度は低かった。寝かしておくのはもったいないので、有効活用したかったということです。

また、VPSか自前PCのどちらを選択すればよいかを判断するとき、やはり費用を考慮しました。もしかすると自前PCよりもVPSの方が費用がかからないかもしれません。私の場合、VPSで激安の運用ができるなら、自前PCで運用することはありませんでした。費用の比較は次の通りです。

VPSの費用は「お名前.com デスクトップクラウド」を例として計算しました。

お名前.com デスクトップクラウド」の計算例
スペック:メモリ 2GB, ディスク 150GB, CPU 2Core, MT4推奨個数3
価格  :2,640円/月あるいは7,590円/3ヶ月
年間  :30,360円

自前PCの費用については、
 購入費:余っているPCの有効活用なので無料
 保守費:自分自身で行うので無料
 回線費:既に使っている回線なので無料
とすれば、後は電気代くらいかと思います。

「自前PC」の計算例
年間の電気代は、約10,080円です。算出方法は次のとおりです。
ノートパソコンの1時間あたりの電気代は、こちらを参考にしました。使用時の平均約45Wとして、「45W÷1,000×1h×31円/kWh=約1.40円」くらいです。つまり、1ヵ月(土日はほぼ停止して25日)の電気代は「1.40円×24h×25日=840円」です。1年間で「840円×12ヶ月=10,080円」となります。

したがって、自前PCで運用した方が年間2万円ほど安いので、10万円のPCを新規購入しても、5年間使用すればVPSとほぼ同じという計算になります。参考までに、約5年前だと「HP Pavilion 13(2019 2月モデル) Core i5/メモリ 8GB/SSD 256GB」が、94,500円で販売されていました。

1つの例として紹介しました。費用についての考え方は、個々で事情は異なると思います。ご参考になれば幸いです。


いいなと思ったら応援しよう!