2009年08月12日

メタトレーダーで EA を使おうよ (009)

・SWVPS使用の注意点 : MT4がかってに複数起動される?

本日はこの話題について説明いたします。

色々なブログを徘徊しているうちに分かった事です。

VPSではEAを起動したのがわからない事がある。
起動したとは知らずにさらに、EAを起動して、結果として複数のEAを起動してしまう事があるらしい。倍の利益を得る場合がある反面、もちろん倍の損害や、資金不足を来たしてマージンコールを起こす場合があります。なによりEAが同じマジックNoで複数起動している事になり正常に動作しない事も考えられます。


なぜ、起こるのか、どうすれば防止できるかを説明いたします。

SWVPS は OSに Windows2003 Server を使っています。このクライアント(つまり一般ユーザーの事ね)は3つのセッションを使う事ができます。私もセッションの概念を良く理解していないのですが、要は同時に3つまで別々のイメージでPCを使えるという事です。ですから、最初のセッションで起動したMT4が別のセッションでは起動している様に見えないのです。
リモートディスクトップで SWVPSに繋ぐ時に現在MT4か起動している以外のセッションにつなぐとMT4か起動していない様に見えます。
(別セッションに繋ぐと繋がった瞬間から start.cmd による自動起動が始まります)
今回、この状態を100%再現する事ができました。

メタトレーダーで EA を使おうよ (006)で作った、リモートディスクトップのショートカットの上で右クリック、プロパティを表示します。

RemotoORG.jpg
リンク先は%SystemRoot%\System32\mstsc.exe となっており何のパラメータも付いていません。
さて、今、前回までの設定でMT4が2個自動起動している状態になっていると仮定します。

まず、Parallels Power Panel からシステムを再起動します。
再起動が終わって2−3分後につなぎます。
すると、繋ぐなり MT4の自動起動が始まって まず Ping の画面が始まります。暫くするとMT4も起動します。

Ping画面.jpg
まず、 Ping の画面がはじまる。

何だか、おかしくありませんか。

だって、再起動してから2−3分、たっているのですから、本当はMT4まで立ち上がっているはずです。
それに警告画面も出なかったですよね。

そこで、タスクバーで右クリックして TaskManager を起動して Usersを選びましょう。

TaskManagr2Users.jpg
TaskManager Users 画面(Administrator が2つ繋がっている)

すると、Adminstrator が2人いますよね。この例では ID=0 と ID=44 ですね。
Active の方が今繋がっている画面です。
つぎに、Processes を選んでいま現在動いているプロセスを表示しまょう。この時、Show Proccesses from All users を必ずチェック。すると、

TaskManagr2Process.jpg
TaskManager Proccesses 画面 (terminal.exe が4つ起動している)

MT4の本体 (teminal.exe) が4つ起動しているのが分かります。
実は、これが複数起動している状態なのです。

Paeralles Power Panel で、リセットすると Console モードなる物でリセットされるらしく、それは先ほどのID0のプロセスなのです。
ここでは自動起動のMT4も動いています。
リモートディスクトップで普通に繋ぐと、Console モード以外に繋がる仕様
(仕様 ← Windows2003 server がそうなっている)なのです。繋がった途端に自動起動 (start.cmd) が働いてMT4を立ち上げるのです。 ですから結果として各プロセス2つ 合計4つのMT4が立ち上がります。

解決方は簡単です。要するに繋ぐ先をID0プロセスに繋げば良いのです。
リモートディスクトップを立ち上げる時にパラメータを与えて繋ぐ先を制御します。最初のリモートディスクトップのパラメータを
%SystemRoot%\System32\mstsc.exe /tekitou

RemotoTekitou.jpg
リンク先を%SystemRoot%\System32\mstsc.exe /tekitou にする

の様に適当に書いて立ち上げてみましょう。もちろん、動く訳がありません。代わりに HELP 画面が立ち上がり説明してくれます。

RemotoHELP.jpg
リモートディスクトップ HELP画面

なになに、 /admin でサーバー管理用のセッションに接続するのか これだな。 
/v: xx.xxx.xxx.xxx で接続ポートも指定できるみたいだな。
まあ、とりあえず、今回は /Admin (最初は大文字でも同じでした(^0^))で行こう。

RemotoAdmin.jpg
リモートディスクトップのパラメータ画面

さて、Paralles Power Panel で再起動して、待つこと2分、繋いでみました。

おお、警告画面もでました。

Service Control Manager.jpg
警告画面(Service Control Manager の画面)

Adminstrator も一人だけ teminal.exe も2つだけ起動している。

TaskManagr1Users.jpg
TaskManager Users 画面(Administrator が一人だけ、繋がっている)

TaskManagr1Process.jpg
TaskManager Proccesses 画面 (terminal.exe が2つだけ起動している)

つまり、パラメータを正しくセットすればOkです。

%SystemRoot%\System32\mstsc.exe /Admin

ちなみに /v: xx.xxx.xxxx.xxx オプションも使うとショートカットをクリックするなり繋がる様になります。

%SystemRoot%\System32\mstsc.exe /Admin /v:xx.xxx.xxx.xxx


それにしても、VPSって仕様を良く分かって使わないと危ないね。



ラベル:SWVPS
posted by 2chの人 at 14:34| Comment(0) | MT4 EAを使おうよ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。