私たちのファンページに参加してください
Any Indicator Alert - alerts, push notifications and multi-timeframe for any custom indicator, no source code needed - MetaTrader 5のためのインディケータ
- ビュー:
- 25
- 評価:
- パブリッシュ済み:
-
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
このフォーラムで最も多くの投稿があるスレッドの2つは、「アラート/シグナル付きインジケーター」と「マルチタイムフレーム・インジケーター」です。これらは数年経ってもまだスレッドが閉じられていません。その理由は、答えがいつも同じだからです。つまり、「ソースコードを入手し、編集して、再コンパイルする」ということです。 しかし、.ex5ファイルはあってもソースコードがない場合にはこの方法は役に立ちませんし、複数のインジケーターを使用する場合にもこの方法は通用しません。
このツールは外部からその役割を果たします。iCustomは、ソースコードがなくても名前で任意のインジケーターを読み込み、そのバッファを読み取ることができるため、1つのツールですべてのインジケーターに対応できます。
EXPLOREモードから開始してください
ユーザーがiCustomを敬遠する理由は、バッファ番号を指定する必要があるにもかかわらず、チャート上に表示されているデータがどの番号のバッファに格納されているのかが分からないためです。そこで、デフォルトモードではまずその疑問に答えます。バッファを調査し、各バッファに含まれるデータをカウントして、直近の数本のバーの横に表示します。
ほぼすべてのバーに値があるバッファは「ライン」なので、レベルクロスや、別のバッファとのクロスを使用してください。インジケーターが何かを描画した箇所を除いて空のバッファは「シグナル」なので、「値が出現した」という条件を使用してください。表から番号を読み取り、「WATCH」モードに切り替えて、トリガーを選択してください。
EXPLOREが出力する例
これは、XAUUSDmのH1チャートで標準RSIを監視した実際の実行結果です。インジケーターが持つすべてのバッファについて、サンプリングされたバーのうち実数値を持つバーの数、値が正確にゼロのバーの数、空白のバーの数が一覧表示され、その後にバーごとの値が記載されています。
Buffers found: 3 (checked up to 16, on XAUUSDm PERIOD_H1)
------------------------------------------------------------------
buffer values zeros blank what it looks like range of the values
0 12 0 0 a line - a value on almost every bar 31.47608 .. 55.28984
1 12 0 0 a line - a value on almost every bar 4.11585 .. 6.11288
2 12 0 0 a line - a value on almost every bar 3.86003 .. 8.96028
------------------------------------------------------------------
bar time buf0 buf1 buf2
0 2026.09.04 20:00 45.61107 5.40493 6.44511
1 2026.09.04 19:00 46.88624 5.82069 6.59381
2 2026.09.04 18:00 43.33095 5.42967 7.10102
3 2026.09.04 17:00 40.80179 5.27080 7.64725
------------------------------------------------------------------
Read it like this: the buffer that is empty on most bars and carries a value
only where the indicator drew its signal is the one to watch. Put its number
in 'Buffer to watch', set Mode to WATCH, and pick a trigger.
A buffer that has a value on every bar is a line - use a level or buffer cross.
ここでは3つのバッファすべてが線として表示されていますが、これはRSIの性質によるものです。矢印やシグナルインジケーターの場合、表の表示は異なってきますが、その違いこそが重要なポイントです:
buffer values zeros blank what it looks like range of the values
0 0 0 8 nothing here on these bars -
11 8 0 0 a line - a value on almost every bar 16.08798 .. 16.25192
14 7 1 0 sparse - looks like a signal 4166.06000 .. 4166.06000ここで注目すべきはバッファ14です。ほとんどのバーでは空であり、インジケーターが何かをマークしたバーでのみ価格情報が格納されるため、「値が表示される」ことがそのトリガーとなります。バッファ11は内部ラインであり、バッファ0はこれらのバーでは何も保持していません。
遅延値と再描画は別物であるため、別々にカウントされます
クローズした各バーの値は保持され、新しいバーごとに再読み込みされます。クローズしたバーの値が変更された場合、その理由には大きく異なる2つのケースがあります。
値の遅延。 バーが空白だったものが、値を持つようになった場合です。インジケーターは、このバーにマークを付ける前に、後のバーのデータが必要でした。 フラクタルは設計上このように動作し、ほとんどのスイングや構造マーカーも同様です。これは欺瞞ではありませんが、そのシグナルが指し示すバー上では決して表示されなかったことを意味し、目視で戦略を判断する場合、これは重要な点となります。
再描画。 そこにあった値が移動したり消えたりした。行動を起こすきっかけとなり得たものが、もうなくなってしまった。
これらはいずれも、バーの時間、旧値、新値とともに報告され、チャートコメントにはそれぞれの累計が記録されます。形成中のバーが変化することは正常な現象であるため、形成中のバーからは何も推測されません。
この区別は、断定ではなく検証によって確認されました。XAUUSDの1時間足(2026年8月1日から20日までの299バー)において、各インジケーターのバッファ0を観察した結果:
| 監視対象のインジケーター | 値の遅延 | 再描画 |
|---|---|---|
| 例:フラクタルは、バーの終値から2バー後にマークを付ける | 40 | 0 |
| Examples\ZigZag、仕様により最後のレッグを再描画する | 0 | 83、すべてが消滅した値 |
| Examples\RSI、バーが閉じると確定する | 0 | 0 |
つまり、遅行する指標については「late」、再描画する指標については「repaint」と表示されますが、どちらにも該当しない指標については何も表示されません。同じ実行において、RSIが30を下回った際にレベルトリガーが2回発動し、それぞれ28.38と29.21で発生しました; MACDのメインラインはシグナルラインを上回るのが9回、下回るのが9回ありました;また、H1チャート上でH4のRSIデータを読み込んだ場合、H4バーごとに1回のアラートが発生し、その数は77回で、それぞれにPERIOD_H4というスタンプが付けられました。 また、157 KBのサードパーティ製「Smart Money Concepts」インジケーターとの比較実行も行われ、16個のバッファが検出され、2つの疎なシグナルバッファから3本の内部ラインが分離されました。
トリガー
値はバー上に表示されます。これは、ちょうどクローズしたばかりのバー上、あるいは遅行指標の場合は、今になってマークされた以前のバー上、レベルを上または下でクロスした場合、あるバッファが別の方向のバッファと交差した場合、あるいは単に値が変化した場合などです。 アラートは、ポップアップ、サウンド、プッシュ通知、またはメールで通知され、1バーにつき1回です。デフォルトでは、クローズしたバーのみが判定対象となります。これをオフにすると、形成中のバーがティックごとに判定されるため、アラートがより早く通知され、反転する場合もありますが、いずれの場合も1バーにつき1回のアラートとなります。
より高い時間足
「この時間足で読み込む」を設定すると、監視対象のインジケーターはチャート上の時間足ではなく、その時間足で読み込まれます。バー、トリガー、およびリペイントチェックはすべてそれに従います。
2つの実例
例1 - RSIが70を上回ったときに通知する。 このインジケーターはご存知でしょうから、EXPLOREは単なる確認用です。
| 入力 | 値 |
|---|---|
| インジケーターファイル | Examples\RSI |
| その入力 | 14 |
| この時間枠で読み取る | 現在の時間枠 |
| モード | ウォッチ |
| ウォッチ対象のバッファ | 0 |
| トリガー | バッファがレベルを上回ったとき |
| レベル | 70 |
| ポップアップアラート | true |
75.04、76.31、70.38、74.83の4つのアラートが発生したテストデータについて。1時間足チャートを監視しながら、4時間足チャートでも同様の結果を得るには、「この時間枠で読み取る」をH4に設定し、それ以外は変更しないでください。
例2 - ダウンロードしたものの、ソースが不明な矢印インジケーター。 ここでは、EXPLOREが実際の処理を行っています。
- 「モード」を「EXPLORE」に設定し、「インジケーターファイル」をそのインジケーターの名前に合わせて設定してアタッチします。「その入力」は空白のままにしておくと、インジケーター自身のデフォルト設定が使用されます。
- ツールボックスの「エキスパート」タブを開き、スパースな バッファ(ほとんどのバーで空欄だが、チャート上に矢印が表示される値があるもの)を探します。これをバッファ2とします。
- モードを「WATCH」に設定し、監視するバッファを2に設定し、トリガーを「値が表示されたとき」に設定し、プッシュ通知をオンにして、再度アタッチします。
- EXPLOREで「バッファの値がほぼすべて正確なゼロである」という注意書きが表示された場合は、「このインジケーターは意味のない箇所に0を書き込む」をオンにし、選択する前に再度表を確認してください。
各入力の役割
| 入力項目 | 機能 |
|---|---|
| インジケーターファイル | MQL5\Indicators 配下のパス(拡張子を除く)。バックスラッシュは1つです。例:Examples\RSI または MyFolder\MyArrows。このフィールドは意図的に空の状態で始まります。すべてのターミナルに必ず存在するインジケーターは存在しないため、入力するまでは何も起こりません。 |
| その入力項目 | 監視対象のインジケーター固有の入力パラメータを、宣言された順序でカンマ区切りで指定します。空白の場合はデフォルト値が使用されます。整数は int 型、小数を含む数値は double 型、true および false は bool 型、それ以外はテキストとして渡されます。ログには処理結果が表示されるため、確認が可能です。 |
| この時間枠で読み込む | チャートのタイムフレームではなく、このタイムフレームで監視対象のインジケーターを読み込みます。「現在のタイムフレーム」とは、チャート自体のタイムフレームを指します。 |
| このインジケーターは、「何もなし」を意味する箇所に0を書き込みます | 厳密な「0」を空として扱います。ZigZagのようなインジケーターで必要です。EXPLOREは、これを有効にする価値があるタイミングを教えてくれます。 |
| モード | EXPLOREモードでは、バッファの一覧が表示され、アラートは発せられません。WATCHモードでは、選択したバッファについてアラートが発せられます。 |
| プローブするバッファの数 | EXPLOREはここで停止します。ノートに「上限に達した」と表示された場合は、この数値を上げてください。 |
| 表示する直近のバー数 | EXPLOREが表示およびカウントする小節数。 |
| 監視対象のバッファ | EXPLOREのテーブルから読み取ったバッファ番号。 |
| 2番目のバッファ | 2つのバッファ・クロストリガーでのみ使用されます。 |
| トリガー | 値の出現、レベルの上下でのクロス、バッファAがバッファBをいずれかの方向でクロスした場合、あるいは単に値が変化した場合。 |
| レベル | 2つのレベルクロストリガーでのみ使用されます。 |
| クローズしたバーのみを判定 | デフォルトではオン:バーがクローズした時点で一度だけ判定が行われ、結果は覆りません。オフの場合、形成中のバーはティックごとに判定されるため、アラートはより早く発生しますが、判定結果が覆される可能性があります。 |
| ポップアップ、サウンド、プッシュ通知、Eメール | 通知方法。任意の組み合わせが可能です。「プッシュ通知」を利用するには、「ツール」→「オプション」→「通知」でMetaQuotes IDを設定する必要があります。 |
| クローズ済みバーの再読み込みと変更の報告 | 遅延値および再描画の報告を有効にします。 |
| 監視対象とするクローズ済みバーの数 | チェックの対象となる過去の日数です。これより以前の変更は検出されません。 |
| この値より小さい変更を無視する | すべての変更を捕捉するには0のままにします。インジケーターの小数点以下1桁目が小幅に変動する場合は、この値を上げてください。 |
多くの人が見落としがちで、本機能で処理される3つの点
一部のインジケーターは、「ここには何もありません」という意味で、EMPTY_VALUE ではなく単純な 0 を書き込むことがあります。ZigZag がその一例です。 単純に読み取ると、そのようなバッファはゼロの連続のように見えます。これに対応する入力オプションがあり、EXPLOREはバッファがほぼ完全なゼロで、わずかな実数値が含まれている場合に注意書きを表示するため、ユーザー自身が判断できます。これは意図的に推測されないようにしています。なぜなら、実際にゼロにあるオシレーターは、外部からは区別がつかないからです。
インジケーターがまだ書き込んでいないバーは、厳密に 0.0 として読み取られます。 これは、ターミナルが新しく生成されたバッファに書き込む値であり、遅行型インジケーターは、必要な後のバーが揃うまで、最新のバーを意図的にそのように残します。Fractals は、直近の 3 つのバーには一切手を加えません。 文字通り解釈すると、これらのバーはすべて後で「変化」することになり、このツールの最初のバージョンでは、実際には再描画が一切ないインジケーターに対して300回の再描画が報告されていました。0.0から空白になるバーは初期化として扱われ、0.0から値になるバーは遅れて到着したものとして扱われるようになりました。
入力グループは位置パラメータスロットを占有します。 iCustomやIndicatorCreateを使用して自身のコードからこのインジケーターを呼び出す場合、6つのグループラベルを実際の入力値と同様に文字列としてカウントする必要があります。そうしないと、ハンドルがエラー4002で失敗します。これは推測ではなく、実際に測定された結果です。 バッファ0には監視対象のバッファの値が格納されるため、EAは配管処理を繰り返す代わりにこれを読み取ることができます。これは、299本のバーすべてにおいて、監視対象のRSIと照合して確認済みです。
指定したインジケーターが読み込めない場合(入力ミスの場合や、まだコンパイルされていないファイルの場合など)、インジケーターは自動的に切り離されることはありません。チャート上およびエキスパートログにその旨が表示され、数秒おきに再試行が行われるため、名前を修正するだけで十分です。
行わないこと
このツールはインジケーターのバッファ を読み取ります。チャートオブジェクトのみで描画を行うインジケーターはバッファを公開しないため、このツールが読み取るべきデータは存在しません。インジケーターの外部からこれを変更することはできません。
「200バー以上にわたりリペイントが見られない」というのは、それらのバーに関する観察結果であり、今後形成されるすべてのバーについて保証するものではありません。これは証拠であり、多くのインジケーターに付属する主張よりは優れていますが、証明ではありません。 このチェックは、「監視対象とするクローズ済みバーの数」で設定したバーの数までを対象としています。それより以前の変動は検出されません。
このチェック機能は、バッファの意味を説明することはできません。バッファ3が14本のバーで1.0を示していることを示すだけであり、それが買いシグナルであるかどうかは、あなた自身が判断する必要があります。
値が正確に0.0である場合にシグナルを発するインジケーターは、「値が表示された」というトリガーを発動しません。なぜなら、それはまだ描画されていないバーの値だからです。シグナルバッファは価格またはフラグを保持しており、決して0.0になることはありません。したがって、実際にはこれによるコストは発生しませんが、これはルールですので、知っておく必要があります。
バッファ0は、監視対象の時間枠がチャート自体の時間枠である場合にのみ、監視対象のバッファを反映します。より高い時間枠をすべてのチャートバーにマッピングすることは別の作業であり、本機能では行われません。
アラートチャネル自体(ポップアップ、サウンド、プッシュ通知、メール)は、それぞれ1回の呼び出しで構成されており、これらを配信しないストラテジーテスターでは実行されませんでした。その呼び出しの前にツールが決定したすべての処理は実行されました。
インストール方法
- AnyIndicatorAlert.mq5 を、ターミナルのデータフォルダ内の MQL5\Indicators フォルダにコピーします。MetaTrader では、「ファイル」→「データフォルダを開く」を選択すると、そのフォルダに移動できます。
- MetaEditorでファイルを開き、F7キーを押してください。エラー0件、警告0件と表示されるはずです。
- ターミナルに戻り、Ctrl+Nを押してナビゲーターを開き、「インジケーター」を開いて、AnyIndicatorAlertをチャート上にドラッグします。リストに表示されていない場合は、ナビゲーター内を右クリックして「更新」を選択してください。
- 「インジケーターファイル」欄に入力します(最初は空欄です)。「モード」は「EXPLORE」のままにし、「OK」をクリックします。まずは Examples\RSI を試してみてください。
- Ctrl+Tを押してツールボックスを開き、「エキスパート」タブを選択します。そこにバッファテーブルがあります。
MetaTrader 5 ビルド 6140 で作成・検証済みです。注文は発注せず、設定も変更しません。
MetaQuotes Ltdによって英語から翻訳されました。
元のコード: https://www.mql5.com/en/code/77003
SuperTrend TV EA
iCustomを通じて、SuperTrend TVインジケーターに基づき、終値バーのみを対象に取引を行うエキスパートアドバイザーです。すべての取引がシグナルと一致しており、シグナルを見逃していないことを証明する監査レポートが付属しています。
GridCapitalCalculator
グリッドトレードを行っている人なら誰もがこう自問するでしょう。「自分の口座残高は十分か?」。一般的な答え――つまり、最後のグリッドレベルでの損失額――は、間違った数値です。口座を破綻させるのは、ポジションがまだ保有されたままで、一見回復可能に見える状態であっても、証拠金水準がブローカーのストップアウト水準に達してしまったときなのです。 このEAは、実際の数値を算出し、その銘柄のM1チャート履歴において、それほどの規模の値動きがこれまでに何回発生したかをカウントします。 このEAが修正する3つの誤りは、いずれも「安心できる方向」に偏ったものです:N本のレッグからなるチェーンは、ステップx Nではなく、ステップx N(N-1)/2で浮動します(10本のレッグの場合、損失ステップは10ではなく45となります); 未決済ポジションは、浮動状態の間も証拠金を拘束します;そしてストップアウトはパーセンテージであり、ゼロではありません――50%の場合、エクイティの半分を失えば十分です。 「86ドルの余裕が必要」というのは抽象的な表現です。「「その規模の値動きが100日間で71回、1.4回に1回の頻度で発生した」というのは、意思決定です。 InpEquityを、まだ持っていない金額に設定して、その設定で実際にどれだけの余裕が必要になるかを確認してください。 厳密に読み取り専用です:ポジションの開設、決済、変更は一切行いません。
Adaptive Moving Average (AMA)
適応移動平均線は、ノイズの影響を受けにくい移動平均線を作るときに使われ、トレンドを検知する際にラグが最小に抑えられるという特徴を持ちます。
Accelerator Oscillator (AC)
アクセルレーション/デセレレーションインジケーター(AC)は現在の市場を動かす力の加速と減速を測ります。