【移植#22】ダブルゼロを価格タグで意識する — 水平線を増やさず節目を表示¶

この記事の3行まとめ
- 末尾にゼロが並ぶ価格を、チャートを横切る水平線ではなく右端の価格タグで表示します
- 3桁・5桁銘柄の1pipを補正し、表示間隔をpips単位で指定できるMQL5版にしました
- EURUSD・1時間足で17個のタグを検査し、全オブジェクトの種類と価格が誤差0で一致しました
今回の原典は「節目を目立たせたいが、線は増やしたくない」¶
投稿日順で次に当たる2010年1月9日の記事では、末尾にゼロが並ぶ価格、いわゆるダブルゼロやトリプルゼロをチャート上で意識する方法が紹介されていました。
一般的な方法は、一定間隔で水平線を並べることです。しかし、普段からサポートやレジスタンスへ水平線を引いていると、自動生成した線まで加わって画面が混雑します。
原典の解決策は、1.4800、1.4900、1.5000といった節目へ小さな価格タグだけを置くものでした。タグの間隔を狭くしたり、現在のBid表示と組み合わせたり、移動平均の終端へ応用した例も掲載されています。
今回のMQL5版は、このうち「水平線なしで、一定間隔の価格タグを置く」という中心部分を移植します。
MQL5の右価格ラベルを使う¶
MQL5には、価格を1点だけ示すOBJ_ARROW_RIGHT_PRICEがあります。公式リファレンスでは「Right Price Label」と定義され、時刻と価格の1点を指定して作成するオブジェクトです。
今回の表示処理は次の流れです。
- チャートに表示されている価格の上限と下限を取得する
- 指定したpips間隔で、範囲内にある価格を列挙する
- 各価格へ右向きの価格タグを作る
- ズームやスクロールで表示範囲が変わったら作り直す
水平線を作るOBJ_HLINEは使用しません。画像でも、黄色いタグは右側だけにあり、チャート全面を横切る線は表示されていません。
3桁・5桁でもpips間隔をそろえる¶
FXの価格桁数によって、_Pointと1pipの関係が変わります。3桁・5桁の銘柄では、通常1pipは10ポイントです。2桁・4桁では1ポイントを1pipとして扱います。
EURUSDが5桁表示の場合、100pipsは価格差0.01000です。したがって、1.14000、1.15000、1.16000という並びになります。
画像はタグを判読しやすいよう、InpStepPipsを10に設定しています。1.14300、1.14400、1.14500のように0.00100刻みです。配布版の初期値は、より大きな節目を見る100pipsにしています。
| 間隔 | EURUSD・5桁表示の価格差 | 用途の目安 |
|---|---|---|
| 10pips | 0.00100 | 細かな補助目盛り |
| 50pips | 0.00500 | 中間の節目 |
| 100pips | 0.01000 | 大きなラウンドナンバー |
MQL5実装で確認した安全ポイント¶
自分が作ったタグだけを管理する¶
すべてのタグ名に、このインジケーター固有の接頭辞を付けています。更新時と取り外し時に削除するのは、その接頭辞を持つオブジェクトだけです。読者が手動で引いた水平線、トレンドライン、メモなどには触れません。
表示範囲が変わったときだけ更新する¶
毎ティックすべてのタグを作り直すと、不要な処理とちらつきが増えます。価格の上限・下限、または最新バーの時刻が変わったときにだけ更新します。ズームやスクロールなどのチャート変更イベントも受け取り、表示範囲へ追従します。
オブジェクト数へ上限を設ける¶
極端に狭い間隔を指定すると、大量のタグが必要になります。配布版は入力値を1pips以上に制限し、表示範囲内で200個を超える場合は作成を中止して間隔の拡大を促します。
再描画を明示する¶
MQL5のオブジェクト操作はチャートの処理キューへ送られます。作成・削除後にChartRedraw()を呼び、価格タグの更新を画面へ反映します。
売買処理は含めない¶
タグは価格の位置を見つけやすくする表示だけです。指値注文、成行注文、損切り、利確、ポジション操作は行いません。
専用MT5での動作確認¶
売買を行わない専用テストMT5で本体と検証EAをコンパイルし、実際に作られたチャートオブジェクトを読み取って確認しました。
| 項目 | 設定・結果 |
|---|---|
| 通貨ペア・時間足 | EURUSD・1時間足 |
| 検証時の間隔 | 10pips |
| 作成された価格タグ | 17個 |
| オブジェクト種類 | 17個すべてOBJ_ARROW_RIGHT_PRICE |
| 設定価格との最大誤差 | 0.0000ポイント |
| 水平線 | 生成なし |
| 本体コンパイル | 0 errors / 0 warnings |
| 検証用コンパイル | 0 errors / 0 warnings |
| キャプチャ | 成功、エラー0 |
画像では、1.13800から1.14800付近までの価格タグを確認できます。タグ以外の価格表示や通常のローソク足はMT5本来の表示です。
パラメータ¶
| パラメータ | 初期値 | 説明 |
|---|---|---|
InpStepPips | 100.0 | 価格タグを置く間隔(pips) |
InpTagColor | Gold | タグの色 |
InpTagWidth | 2 | タグの大きさ(1~5) |
表示が少なすぎる場合は50pipsや10pipsへ下げ、タグが多すぎる場合は間隔を広げてください。
ダウンロード¶
22_Round_Number_Price_Tags_v1_00.mq5 をダウンロード
MT5のIndicatorsへ保存してコンパイルし、確認したいチャートへ適用してください。インジケーターを外すと、このインジケーターが作成した価格タグも削除されます。
ロジック評価の結論¶
ラウンドナンバーは多くの参加者が見やすい価格ですが、タグを表示しただけで反発やブレイクが予測できるわけではありません。どの市場・時間帯で注文が集まりやすいかは一定ではなく、表示そのものを売買優位性と混同しないことが大切です。
このツールの役割は、チャートを水平線だらけにせず「いま価格が大きな節目からどの程度離れているか」を素早く確認することです。売買へ応用する場合は、実際の値動き、スプレッド、出来高、上位足の構造などを別に検証してください。
原典の控えめな価格タグという発想は、MQL5の専用オブジェクトでも素直に再現できました。水平線を増やさず節目だけ残すため、手動分析の邪魔をしにくい表示になっています。
前後の記事¶
前: 【移植#21】平均足をサブウィンドウへ描く — 背景色で隠さずDRAW_COLOR_CANDLESで表示
次: 【移植#23】チャートの窓幅をpipsで測る — 前足終値と次足始値の差を可視化