MT5でインジケーターの初期値を変更しても反映されない理由|再コンパイルでは変わりません

MT5のインジケーターは、一度チャートに追加した時点の入力値を、チャートごとに保存します。そのため、ソースコードの初期値(デフォルト値)を書き換えて再コンパイルしても、既に追加済みのチャートには反映されません。

これはバグではなく仕様です。新しい初期値が効くのは、そのインジケーターを新規に追加した時だけです。

この症状が起きる典型的な場面

  • コード内の入力パラメータの初期値を変更し、MetaEditorで再コンパイルした
  • 「0 errors」で成功しているのに、既存のチャートでは古い数値のまま
  • 別の通貨ペアで新しくチャートを開いて追加すると、そちらは新しい初期値になっている

「新しく追加したチャートでは変わるのに、前からあるチャートでは変わらない」という違いに気づけば、原因はほぼ確定します。

原因:入力パラメータはコードではなくチャートに紐づく

MT5は、インジケーターをチャートに追加する際、その時点の入力値をチャートの設定として保存します。以後は、ソースコードの初期値ではなく、この保存された値を毎回読み込みます。

そのため「コードの初期値」と「チャートに保存された値」は、追加した瞬間に切り離されます。再コンパイルはコード側だけの更新であり、チャート側の保存値には触れません。

対処法1:チャート上でパラメータを直接変更する

最も早い方法です。チャート上のインジケーター名を右クリック(またはチャート右クリック→「インジケーターリスト」)し、対象のインジケーターを選んで「編集」を開きます。「入力パラメータ」タブで値を直接書き換えて「OK」を押してください。

MT5のインジケーター編集画面にある入力パラメータタブ

この方法はコードを触らずに済みますが、チャート1枚ごとに手動で直す必要があります。 複数のチャートに同じインジケーターを追加している場合は、枚数分繰り返すことになります。

対処法2:インジケーターを一度削除して追加し直す

新しい初期値をチャート全体に反映させたい場合は、こちらが確実です。

  1. チャート上でインジケーター名を右クリックし、「削除」を選ぶ
  2. 「挿入」→「インジケーター」→「カスタム」から、同じインジケーターを再度追加する
  3. この時点で、コードに書いた新しい初期値が反映された状態で追加される

削除して追加し直すため、そのインジケーターに紐づく描画や設定(色・スタイルなど)もリセットされる点に注意してください。

チャート上でインジケーターを右クリックして削除を選ぶ操作

対処法3:定型チャート(テンプレート)を作り直す

同じ設定を複数の通貨ペア・時間足で使い回している場合、テンプレート自体に古い入力値が保存されています。対処法2でインジケーターを追加し直した後、あらためて「定型チャート」として保存し直してください。

テンプレートを作り直さずに古いテンプレートを他のチャートへ適用すると、そちらにも古い初期値が上書きされてしまいます。

MT5の定型チャートとして保存する操作

それでも反映されない場合

  • コンパイルが本当に成功しているかを確認する。MetaEditor下部に「0 errors」と出ているか、エラーが出たまま古い.ex5が残っていないか
  • ナビゲータの更新(インジケーターフォルダを右クリック→更新)を行う
  • それでも変わらない場合はMT5を再起動する
  • 複数の.ex5が同名で別フォルダに存在していないか確認する(サブフォルダに古いファイルが残っているケース)

開発者向け補足:入力値の永続化について

この挙動は、EAやインジケーターを配布・共有する場面で特に問題になります。ユーザーに「新しいバージョンに更新してください」と伝えても、既存チャートの入力値は自動更新されません。

配布時に初期値の変更を含む更新を行う場合は、次のいずれかをリリースノートに明記しておくことをおすすめします。

  • 「新しい初期値を反映するには、チャート側で入力値を変更するか、インジケーターを削除して再追加してください」
  • 入力パラメータの意味が変わる更新の場合は、パラメータ名自体を変更し、ユーザーに再設定を促す

入力パラメータのリセットは、パラメータ画面右下の「リセット」ボタンでも行えますが、これは「コードの現在の初期値」に戻すものではなく、そのインジケーターを最後に追加した時点の値に戻る場合があります。動作は環境によって差が出ることがあるため、確実に新しい初期値を反映したいなら対処法2を使ってください。

まとめ

  1. 初期値を変えて再コンパイルしても、既存チャートには反映されない(仕様)
  2. 1枚だけ直すなら、チャート上でパラメータを直接編集する
  3. 確実に反映させるなら、インジケーターを削除して追加し直す
  4. テンプレートを使い回している場合は、テンプレートも作り直す

インジケーターの追加そのものでつまずいている場合は、カスタムインジケーターの追加手順もあわせてご覧ください。

コンパイル自体がエラーで止まっている場合は、コンパイルエラーが消えない時に見る順番を先にご覧ください。