コンテンツにスキップ

【移植#93】チャートスケールをオート/固定で切り替える — キー操作を2つのボタンへ

EURUSD H1で200pips幅の固定スケールを表示し、Auto scaleとFix scaleのボタンを置いたMT5チャート

この記事の3行まとめ

  • MT4のダイアログ操作や外部キー送信を使わず、MT5標準のチャートAPIで表示幅を切り替えます
  • 「Fix scale」はクリック時のBidを中心に指定pips幅を設定し、「Auto scale」は端末の自動調整へ戻します
  • Build 6230のEURUSD H1で、固定幅・価格上下限・ボタン表示・Autoへの復帰を確認しました

今回の原典は「チャートスケールをオート/固定に切替える」

2010年5月4日の原典は、複数チャートの価格表示幅を固定して監視し、別の時間足を見るときには自動スケールへ戻したい、という相談から始まります。

元記事「チャートスケールをオート/固定に切替えるコード。」を読む

原案では、MT4のF8設定ダイアログを開いて操作する実行ファイルや、キーを送るスクリプトが使われていました。今回は画面上に2つのボタンを置き、MT5が公開しているチャート設定APIから直接切り替えます。

元記事は8通貨の監視にも触れていますが、このインジケーターが操作するのは取り付けたチャート1枚です。複数チャートを切り替える場合は、それぞれに取り付けます。

固定幅をクリック時の価格を中心に設定する

「Fix scale」を押すと、現在取得できるBidを中心に表示幅を設定します。初期値は合計200pipsです。たとえばBidが1.10000なら、上下100pipsずつの範囲を指定します。

Text Only
最小値 = Bid - (表示幅 × 1pipの価格幅 ÷ 2)
最大値 = Bid + (表示幅 × 1pipの価格幅 ÷ 2)

3桁・5桁のFX銘柄では1pipを_Point × 10、それ以外は_Pointとして扱います。金属など銘柄固有の呼び方に合わせたい場合は、InpPipSizeへ1pipの価格幅を入力できます。

「Auto scale」を押すと固定スケールを解除します。価格範囲の固定と解除には、MT5のChartSetDouble()とChartSetInteger()を使い、CHART_FIXED_MIN、CHART_FIXED_MAX、CHART_SCALEFIXを設定します。チャート設定APIの変更はイベントキューへ登録されてから反映されるため、操作後にチャートを再描画します。各プロパティの説明はチャートプロパティの公式リファレンスで確認できます。

ダウンロードと使い方

93_Chart_Scale_Switch_v1_00.mq5 をダウンロード

  1. ファイルをMT5のIndicatorsフォルダへ置き、MetaEditorでコンパイルします。
  2. 固定幅を変更する場合はInpVisibleRangePipsを設定します。初期値は200pipsです。
  3. 1pipの価格幅を銘柄に合わせて指定する場合はInpPipSizeへ入力します。0なら桁数から自動判定します。
  4. インジケーターをチャートへ取り付け、「Fix scale」または「Auto scale」をクリックします。

初期化時にはスケールを変更しません。固定幅への切り替えで現在値が取得できない場合や、範囲が不正な場合は変更を行わず、ログへ理由を出します。

実機検証

専用MT5 Build 6230でインジケーターと検証用EAをコンパイルし、どちらも0 errors・0 warningsでした。EURUSD H1では、固定幅200pipsに対してBid 1.13638、下限1.12638、上限1.14638となり、ボタン2個が表示されました。その後、自動スケールへ戻るAPI操作も確認しています。注文・ポジションはどちらも0のままです。

画像は実際のMT5チャートです。画面に表示された固定範囲は検証時点の価格に基づきます。

使える範囲と注意点

  • 固定範囲は「Fix scale」を押した時点のBidを中心にします。相場に合わせて中心を動かし続ける機能ではありません。再調整したいときは再度クリックします。
  • このインジケーターが変更するのは、取り付け先チャートの縦方向の価格スケールです。時間軸のズームや複数チャート一括操作は行いません。
  • Auto scaleへ戻した後の表示範囲は端末が決めます。特定の値幅を記憶・再現する機能とは別です。
  • FX以外の銘柄では「1pip」の定義が利用者や業者の表示慣習によって異なります。必要に応じてInpPipSizeを明示してください。

前後の記事

あわせて読みたい記事

前: 【移植#92】ZigZagの各スイングをpips/hで表示 — 変わる折れ点も見分ける

次: 【移植#94】日足の値幅を年ごとに比べる — ATR(1)で見る相場環境

— SPONSORED —