こんにちは、トレーダーの皆さん!今日は、人気のあるニュースインジケーター FFCal を基にした改良版を紹介します。このインジケーターは、もともと DerkWehler がForexFactoryフォーラムで発表したものです。私自身のニーズに合わせてコードを修正したところ、他のトレーダーにも役立つのではないかと思い、シェアすることにしました。
このインジケーターは、チャート上にForex Factoryカレンダーからの5つの経済イベントを表示するパネルを設置します。高・中・低インパクトのイベントやスピーチ、祝日、特定のキーワードによるフィルターも可能です。詳細な修正内容はこちらをご覧ください。
さらに、EA内からこのインジケーターを呼び出すこともでき、iCustom()関数を使用して2つのバッファにアクセスできます:
- バッファ (0) には、最新のイベントまでの分数が含まれています。
- バッファ (1) には、最新のイベントのインパクト値が含まれています(低 = 1, 中 = 2, 高 = 3)。
バッファを呼び出す方法は2通りです:
シンプルな呼び出し: (デフォルト値が適用されます)
int EventMinute = (int)iCustom(NULL,0,"FFC",0,0); if(EventMinute == 30) { .. あなたのコード .. } // イベントの30分前 int EventImpact = (int)iCustom(NULL,0,"FFC",1,0); if(EventImpact == 3) { .. あなたのコード .. } // 高インパクトイベント
高度な呼び出し:
iCustom( string NULL, // シンボル int 0, // タイムフレーム string "FFC", // カスタムインジケーターのパス/名前 bool true, // true/false: アクティブチャートのみ bool true, // true/false: 高インパクトを含める bool true, // true/false: 中インパクトを含める bool true, // true/false: 低インパクトを含める bool true, // true/false: スピーチを含める bool false, // true/false: 祝日を含める string "", // キーワード検索(大文字小文字を区別) string "", // 無視キーワード(大文字小文字を区別) bool true, // true/false: アップデートを許可 int 4, // 更新頻度(時間単位) int 0, // バッファ: (0) 分数, (1) インパクト int 0 // シフト );
*このインジケーターは現時点ではバックテスト機能を持っていません。
おすすめのスタイル:
- 高インパクト色 = C'217,83,79'
- 中インパクト色 = C'255,185,83'
- 低インパクト色 = C'91,192,222'
- 祝日色 = clrOrchid
- 備考色 = clrDimGray
カレンダーの凡例:
- m/m: 月次
- q/q: 四半期
- y/y: 年次
- K 千
- M 百万
- B 億
- T 兆



修正内容:
- 追加: #property strictを追加し、MetaTrader 4 Build 600+との互換性とコード品質を向上。
- 追加: イベントの前回/予測インパクトを表示するオプション(色付きインパクト)。
- 追加: アクティブチャートに関連するイベントのみを表示するオプション(他のパラメータを上書き)。
- 追加: キーワードフィルター。特定の単語(例: "NFP")に関連するイベントをフィルタリングするオプション(大文字小文字を区別)。
- 追加: 通貨強度/バーの残り時間/スプレッド値を表示するオプション。
- 追加: 過去のイベントの表示時間を制御するオプション(分単位)。
- 追加: パネルの位置を4つのチャートコーナーに設定するオプション。
- 追加: マウスホバー時にイベントタイトル、インパクト、残り時間を表示するツールチップ。
- 追加: パネルタイトル。リマインダーノートとして使用可能です :)
- 修正: イベントを「日付/時間形式」で表示するように変更(残り時間はツールチップから確認可能)。
- 修正: 今後のイベントのための縦線を表示(ブローカーの時間に応じて「時間オフセット」の入力を調整する必要があるかもしれません)。
- 修正: 今後のイベントの分数とインパクトを保持するバッファを見直し(上記の例を参照)。
- 修正: 外部入力の順序を見直し。
- 改善: DownLoadWebPageToFile()関数を、ネイティブWindowsのURLDownloadToFileW()関数に置き換え。
- 改善: XMLファイルのダウンロード/読み込み関連のコードを関数にまとめ、必要なときに呼び出せるように。
- 改善: XMLファイルを更新するために使用される「GlobalVariables」を、FILE_MODIFY_DATEに置き換え、OnTimer()を「AllowUpdates」、「UpdateHour」入力で設定。
- 改善: GMTオフセットを調整し、イベントが自動的にローカル時間で表示されるように。
- 改善: パネル/テキストの位置を右/左に調整。
- 改善: アラート機能。ポップアップアラートに加えて、音声アラート、プッシュ通知やメールも送信されます(2種類のアラート)。
- 改善: コード品質を向上させ、インジケーターがより軽量で高速に。
- 修正: 様々なバグ修正、一部の不要な/未使用のコードや変数を削除し、関連する関数内に変数を配置。
実際の著者:
クレジット:
- JimDandy
- WHRoeder
- RaptorUK
*このインジケーターを使用するには、MetaTrader 4のプラットフォームオプションでDLLインポートを有効にする必要があります。
*コードにはバグや他の欠陥がある可能性があるため、バグや提案、またはより良いコードプラクティスを見つけた場合は教えてください。
*Forex Factoryのウェブサイトによると、すべてのイベント時間はおおよそであり、変更される可能性があります。