MT4のチャートをメールで送るには?

皆さん、こんにちは。

私はあまり使わないのですが、価格やテクニカル指標の変化、トレードの結果などをメールで知らせたいという人は多いようです。その際に、チャートのスクリーンショットを一緒にメールで送りたい場合どうすればよいか、というご質問をいただきました。

まず、チャートのスクリーンショットですが、MQL4にMT4のチャートのスクリーンショットをファイルとして保存するWindowScreenShot()という関数があります。

これは、引数を6個取りますが、プログラムを挿入したチャートのスクリーンショットをそのまま取る場合は、後半3個は省略可能です。

必要な引数は、ファイル名、画像の横幅(ピクセル)、画像の縦幅(ピクセル)の三つです。例えば、640×480のサイズの「chart.gif」というファイルとして保存したい場合、

と書けばOKです。このファイルはMT4のデータフォルダの下の「MQL4\Files」のサブフォルダに保存されます。

次にこのファイルを添付メールとして送る方法です。

MQL4にはSendMail()というメール送信する関数が組み込まれています。ただし、SendMail()はテキストファイルを送る機能しかないので、これを使って添付ファイルを送るには、画像ファイルをテキストに変換するなど面倒な処理が必要となります。

そこで、今回は外部ソフトを使って対応することにしてみます。色々と調べたところ、フリーソフトの「smail」というのが利用しやすいようです。すでにこの手のtipsとしてブログ記事になっているものもあるので、これが無難なところだと思います。

smailを使うには、ソフトのインストールおよび、設定が別途必要となります。ソフト自体は以下のページからダウンロードできます。

http://dip.picolix.jp/disp2.html

現在の最新バージョンは、「smail-v4.18.zip」です。

これをダウンロードして解凍すると、いくつかファイルが出てきます。このソフトは特にインストールの作業は必要ありません。実行に必要なファイルは、「smail.exe」と「smail.ini」なので、この二つのファイルを適当なフォルダの下にコピーするだけです。

ここでは、「C:\smail」 の下にコピーしておきます。

smailを実行すると、下のような初期設定画面が表示されます。

Image1

ここで、SMTPサーバの部分を設定します。設定の仕方については、お使いのプロバイダのサポートや、smailに付属の設定参考資料などをご参照ください。

正常に設定されたかどうかは、コマンドプロンプトから次のようなコマンドを実行します。

smail 送信先アドレス -hメールサーバ -f発信元アドレス -sメール件名 -Tメール内容

smailをダウンロードしたページに具体例が記載されているので、そちらを参考にしてください。とりあえず、これでメールが正常に送れることを確認しておきましょう。

smailの設定が完了すれば、いよいよMT4のプログラムとなります。ここでは、動作確認のためにスクリプトとして作成してみます。

OnStart()関数では、「メールの件名」、「メールの内容」、「添付ファイル名」をそれぞれstring変数に代入します。そして、WindowScreenShot()でチャートのスクリーンショットをファイルとして保存します。

その後、独自に定義したMySendMail()関数に、メールの件名、メールの内容、添付ファイルを指定して呼び出せば、チャート画像を添付ファイルとしたメールが送られるというわけです。

MySendMail()関数では、smailのコマンド名、メールサーバ、発信元アドレス、送信先アドレスを指定して、先ほどコマンドプロンプトで動作確認したのと同じようなコマンドを実行します。添付ファイルについては、「-a」オプションに指定するだけなので簡単です。

ただし、smailのような外部プログラム実行には、ShellExecuteW()という関数を通す必要があります。これはMQL4の関数ではなく、Windowsに入っている shell32.dll というライブラリ中の関数です。このあたりの詳しいことは省略しますが、プログラムの始めの#import のところでShellExecuteW()が使えるよう設定されていると思ってください。

なお、外部DLLを使うということで、MT4の設定が必要となります。以下のようにMT4の[ツール]メニューの[オプション]ー[エキスパートアドバイザー]のタブの画面で、「DLLの使用を許可する」にチェックを入れておいてください。

Image3

このスクリプトをチャートに挿入すれば、そのチャートの画像ファイルをメールに添付して送ることができます。あとは、EAに組み込むなど色々と試してみてください。



コメントは受け付けていません