私は、指定した基準が発生したときに矢印が描かれる指標をいくつか持っています。 MT4を一日中見ているのではなく、矢印が引かれてから私のPCで他の作業をすることができるように警告を出したいと思います。しかし、私はアラートが一回だけ再生することが欲しいです!どうすればこのようにすることができますか?
アラートを再生するために指標で使用した基本的なコードは次のとおりです。
挿入されたコードPlaySound(Alert.wav);
ありがとう。
Printable View
私は、指定した基準が発生したときに矢印が描かれる指標をいくつか持っています。 MT4を一日中見ているのではなく、矢印が引かれてから私のPCで他の作業をすることができるように警告を出したいと思います。しかし、私はアラートが一回だけ再生することが欲しいです!どうすればこのようにすることができますか?
アラートを再生するために指標で使用した基本的なコードは次のとおりです。
挿入されたコードPlaySound(Alert.wav);
ありがとう。
デフォルトのAlert.wavは短すぎるため、しばしば見逃しています。数秒、例30秒の音楽wavファイルを使用します。/音楽wavファイルを再生extern bool PlaySounds = true;/...false;/演奏するwaveファイルextern string AlertSound = music.wav; if(PlaySounds)PlaySound(AlertSound); ***お気に入りの曲からwavファイルを作成し、そのmusic.wavに名前を付けるQuote:
Originally Posted by ;
アラートがどのようにトリガーされているかによって異なりますが、この問題に対処する一般的な方法は次のとおりです。1.状態の変更を確認します。 OnCalculate()/OnTimer()による前回の実行でアラートが発生したかどうかを覚えておくには、静的変数を使用します。それがあった場合は、再度警告しないでください。それができなかった場合は、警告が表示され、音が鳴ります。挿入されたコードstatic bool OldState = false;ブールNewState =(クローズ#91; 1#93; gt;クローズ#91; 2#93;);/あなたのロジックを変更するif(!OldState NewState){PlaySound(Alert.wav); } OldState = NewState; 2.アラート間の時間遅延を追加するアラートが最後にトリガされたときを覚えて、これに時間遅延を追加し(秒単位で)、アラートを再度再生する前にTimeCurrent()がこの時間よりも大きいことを確認します。挿入されたコード静的datetime LastAlert = 0;もしあなたのロジック{PlaySound(Alert.wav);}を変更してください。 LastAlert = TimeCurrent(); }また、両方の組み合わせを使用することもできます(価格がアラートのしきい値を超えて踊っている場合)。または、バーごとに1回だけチェックしてください。希望が役立つ
ありがとうございますが、私の質問は、繰り返し再生されるアラートを止める方法の詳細です。Quote:
Originally Posted by ;