このMACDインジケーターは、現在のチャートのタイムフレームよりも高いまたは低い任意のタイムフレームに適用できます。
値は、一般的な価格タイプに基づいて計算されます。ただし、インジケーターが現在のチャートのタイムフレームよりも低いタイムフレームに適用されると、すべての値を表示することはできません。この場合、選択した価格タイプに応じて、最も適切な値を提供するために異なるアプローチが採用されます。
以下に2つの例を示します:
- タイムフレーム_1=5分、タイムフレーム_2=1分、終値に基づく計算:
タイムフレーム_1の任意のバーについて、インジケーターはタイムフレーム_2の最新のバーを表示します。このバーの終値は、タイムフレーム_1のバーの終値の前または同時です。これはクローズされたバーにも、まだオープンのバーにも当てはまります。
- タイムフレーム_1=5分、タイムフレーム_2=1分、始値に基づく計算:
タイムフレーム_1の任意のバーについて、インジケーターはタイムフレーム_2の最新のバーを表示します。このバーの始値は、タイムフレーム_1のバーの始値の前または同時です。これもクローズされたバーやオープンのバーに当てはまります。ここでの論理は、もし取引をバーのオープン時に行うなら、5分バーがオープンした時点では、最初の5本の1分バーの始値しか分からないからです。したがって、2本目から5本目の1分バーは計算に含まれません。
任意のタイムフレームを他のタイムフレームと組み合わせることができます。例えば、タイムフレーム_1 = 5分、タイムフレーム_2 = 12分など、同期していない場合でも大丈夫です。インジケーターはそれらを同期させるようにします。これも上記の例と同様に機能します。
添付のExcelシート(タイムフレーム間の変換.zip)には、可能な組み合わせの例と、より視覚的な説明が含まれています。また、ソースコードを見て、どのように実装されているか確認してみてください。これを参考にして、自分自身のマルチタイムフレームインジケーターを作成する手助けになることを願っています。
タイムフレームを切り替える際には、価格データが読み込まれるまで数秒の時間を与えてください。インジケーターが表示されない場合は、手動でチャートをリフレッシュしてください。
必要なファイル:
- MovingAverages.mqh(terminal_data_folder\MQL5\Includeフォルダのデフォルトインクルードファイル)
- MACD_Histogram_MC(mql5.comにも掲載されています)
インジケーターを動作させるためには、MACD Histogram_MTF_MC.mq5 と MACD_Histogram_MC.mq5 を terminal_data_folder\MQL5\Indicators フォルダに配置してください。
エラーメッセージのオン/オフを切り替えるには、ソースを確認してください:
bool ShowErrorMessages=false; // デバッグ用のエラーメッセージの表示を切り替え

更新履歴:
2010年09月26日: v03
- チャートのタイムフレームよりも小さいタイムフレームでの値の表示を改善。
- if(convertedTime<tempTimeArray_TF2[0]);の後にバッファをEMPTY_VALUEに設定。
- コードの最適化。
- OnInit()からPLOT_DRAW_BEGINを削除(シングルタイムフレームインジケーターから継承)。
- バッファと配列のArraySetAsSeriesをOnInit()に移動。
- シグナルラインのMAメソッドとしてMODE_SMMAとMODE_LWMAを追加。
- ENUM_APPLIED_PRICEをリストの最後の入力パラメータにしました。
2010年08月28日: v02B
- インジケーター初回公開。
コメント 0