音を鳴らしたい!

特定の条件で音を鳴らす

音を鳴らす、というとアラート表示機能を想像する方も多いと思いますが、今回紹介するのは音「だけ」を鳴らす方法で、アラート表示機能とは異なりポップアップウィンドウは表示しません。そのためメッセージを表示することは出来ませんが、アラート表示機能では出来ない「プログラムごとに好きなサウンドファイルを指定する」ことが可能となります。

サウンドファイルを再生するPlaySound関数

サウンドファイルを再生するには、MQL4で提供されているPlaySound関数を使用します。

bool PlaySound(
    string filename     // file name
);

引用元:PlaySound – MQL4 Reference

引数

filename

第一引数のfilenameには再生したいファイル名を指定します。ファイルの指定方法は「MetaTrader4のインストールフォルダにあるSoundsフォルダ」からの相対パスとなり、Soundsフォルダ以外にあるファイルを指定することは出来ません。なお、拡張子の「.wav」は省略可能となります。

戻り値

指定したファイルがSoundsフォルダに存在する場合はtrue、存在しない場合はfalseとなります。

使用例

1.Soundsフォルダにある「alert2.wav」を指定

PlaySound("alert2.wav");

対象のサウンドファイルがSoundsフォルダ直下にある場合は、引数にファイル名をそのまま指定します。

2.Soundsフォルダのサブフォルダ「abc」にある「alert2.wav」を指定

PlaySound("abc/alert2.wav");

対象のサウンドファイルがSoundsフォルダのサブフォルダにある場合は、サブフォルダ名+「/(半角スラッシュ)」に続けてファイル名を指定します。2つ以上のサブフォルダの場合も同様に半角スラッシュを使用してSoundsフォルダからの相対パスでサウンドフォルダを指定することになります。

サウンドファイルの形式

再生可能なサウンドファイルの形式はWAVEファイル(*.wav)のみとなります。mp3など他のファイル形式の場合は、WAVE形式に変換してからSoundsフォルダに配置することで再生することが出来ます。

サウンドファイルの再生時間

PlaySound関数を使用してサウンドファイルを再生した場合、その再生時間を指定することは出来ません。サウンドファイルを再生中に再度PlaySound関数を実行した場合は、再生中のサウンドファイルを停止し新しいサウンドファイルの再生を開始することになります。

バックテスト時のサウンド再生

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

まとめ

サウンドファイルの再生にはPlaySound関数を使用する
再生可能なファイル形式はWAVEファイルのみ
サブフォルダも含めた相対パスでファイル名を指定
再生時間を指定することは出来ない
バックテストでサウンド再生を確認することは出来ない

参考URL

PlaySound – MQL4 Reference
https://docs.mql4.com/common/playsound