メールを送信したい!

特定の条件でメールを送信

MQL4を使用したプログラムでは、任意のタイミングでメールを送信することが出来ます。メールは任意のアドレスに送信可能で、送信先のメールアドレスを登録すればスマートフォンでも受信することが出来ます。条件の達成状況や売買の成功可否をメールで送信することで、メールを受信できる環境下であれば外出先でもその状況を把握することが出来るため、非常に便利な機能となります。

メールを送信するSendMail関数

メールを送信するには、MQL4で提供されているSendMail関数を使用します。

bool SendMail(
    string subject,         // header
    string some_text        // email text
);

引用元:SendMail – MQL4 Reference

引数

subject

第一引数のsubjectには送信するメールのタイトルを指定します。

some_text

第二引数のsome_textには送信するメールの本文を指定します。

戻り値

メールの送信準備が正常に行われた場合はtrue、それ以外の場合はfalseとなります。trueが返却された場合でも、メールの設定に誤りがある場合は正常に送信出来ませんのでご注意ください。

使用例

string title = Symbol() + ", M" + IntegerToString(Period()) + ": Buy!!.";
string text = "Open Buy¥nat " + TimeToString(TimeCurrent());
SendMail(title, text);
実行結果(メールタイトル)
USDJPY,M30: Buy!!.
実行結果(メール本文)
Open Buy
at 2018.07.07 12:34:56

このようにSendMail関数にタイトルと本文を指定するだけでメールの送信が可能です。引数の型はどちらもstring型となりますので、数字や日付を含む場合は必ず変換関数(IntegerToStringやTimeToStringなど)を使用してstring型に変換してから引数に渡すようにしましょう。なお、本文を改行するには改行コード(¥n)を使用します。

メールアドレスの設定

送信先のメールアドレスなど、送信に関するメールの設定はプログラムではなくMetaTrader4の方で行います。MetaTrader4の上部メニューにある「ツール」→「オプション」を選択してオプション画面を表示し、その中にある「E – メール」タブがメールの設定画面となります。SendMail関数を使用したプログラムは、ここで設定された設定でメールを送信する、ということですね。設定完了後、同画面にある「テスト」ボタンを押すとテストメールを送信出来ますので、テストメールを受信できればSendMail関数によるメール送信も正常に行うことが可能、ということになります。

日本語を含むメールの送信

メールのタイトルおよび本文に日本語(マルチバイト文字)を含むことも可能です。ただし環境によっては文字化けが発生する可能性もありますので、出来る限り半角英数字だけを使用した方が良いでしょう。

ファイルの添付

SendMail関数によるメール送信では、ファイルの添付は出来ません。ファイルの添付を行うにはMQL4ではなく外部プログラム(DLL)を使用することで実現可能となりますが、その場合はSMTPサーバーやメールアドレスの設定はMetaTrader4のオプション画面で指定した内容ではなく、使用する外部プログラムの仕様に依存しますのでご注意ください。

バックテスト時のメール送信

バックテスト時にメールの送信は行われません。またバックテストのログからSendMail関数が呼ばれたことを確認することは出来ませんので、バックテストによる動作確認ではPrint関数などを使用して別途ログ出力を行う必要があります。

まとめ

メールを送信するにはSendMail関数を使用する
引数にはタイトルと本文を設定する
メールの設定はMetaTrader4のオプション画面で行う
送信内容に日本語を含むことは可能(文字化けの可能性有り)
メールにファイルを添付することは不可
バックテストでメール送信を確認することは出来ない

参考URL

SendMail – MQL4 Reference
https://docs.mql4.com/common/sendmail