MQL4 / MQL5 両対応オブジェクトチャートの状態
目次
ChartGetIntegerチャートの状態を調べる
チャートの表示状態(大きさ・ワンクリック取引の有無・時間足など)を調べる関数。自分のパネルが画面の何かと重ならないかを判断するときの入口になる。
1書式
long ChartGetInteger(
long chart_id, // 0=いまのチャート
ENUM_CHART_PROPERTY_INTEGER prop_id,
int sub_window=0
);
書式はMQL4・MQL5で同じ。
2引数
| 引数 | 内容 |
|---|---|
| chart_id | 対象のチャート。0でいま実行しているチャート |
| prop_id | 調べたい項目。CHART_SHOW_ONE_CLICK(ワンクリック取引の表示)・CHART_HEIGHT_IN_PIXELS(チャートの高さ)など |
| sub_window | サブウィンドウ番号。省略すると本窓 |
3戻り値
調べた項目の値(long)。真偽で扱う項目は0/1で返る。
4実際に動かした結果
ワンクリック取引が出ているときだけ、パネルを下にずらす
CHART_SHOW_ONE_CLICKを見て、出ているときだけ枠の高さぶん下げる。出ていなければ何もしない。
✓ 実測
ワンクリック取引の表示・非表示を切り替えて確認。
| 状態 | ChartGetInteger(0, CHART_SHOW_ONE_CLICK) |
|---|---|
| ワンクリック取引:表示 | 1 |
| ワンクリック取引:非表示 | 0 |
5使用例:ワンクリック取引が出ていたらパネルを下げる
int PanelOffsetY()
{
if(IsTesting()) return(0);
if(!(bool)ChartGetInteger(0, CHART_SHOW_ONE_CLICK)) return(0);
int dpi = (int)TerminalInfoInteger(TERMINAL_SCREEN_DPI);
if(dpi < 96) dpi = 96;
return((int)(78 * dpi / 96.0));
}
MetaEditorでコンパイル0エラー・0警告を確認済み。
6MQL4→MQL5の違い
🔁 差分
関数自体に違いは無いが、MT5はボタンの上を横切る線をボタンより先に拾うという別の性質と組み合わさる場面が多い。ワンクリック取引の枠を検出しても、線とボタンが重なっていればOBJPROP_ZORDERの設定も合わせて必要(ObjectCreateを参照)。
7よくある罠
⚠ 実務で踏んだもの
CHART_PRICE_MAX/CHART_PRICE_MINは、オフラインのチャートで0を返すことがある。この値を使って本数や範囲を自動計算する処理は、上限と逃げ道を用意しておく。- 文字を大きくしている環境ではワンクリック取引の枠も大きくなる。
TERMINAL_SCREEN_DPIを見て、下げる量をDPIに応じて変える。
8関連する関数
9使っている無料ツール
REI_RolloverGuard・REI_SpikeMeter — ワンクリック取引の表示を検出して、パネルが重ならないよう自動でずらすために使用(全ツール共通の配置の仕組みの一部)
MORNING BRIEF平日 毎朝7時までに更新
今日はどこを見ればいいか。
ドル円とユーロドルの主要ライン・予想高値安値を、平日の朝に図1枚にまとめています。
朝刊を見る→9/25 8:27 時点ドル円158.78▼-7 pipsドル円 予想レンジ158.41 〜 159.23ドル円 上の節目158.90▲ドル円 下の節目157.80▼ユーロドル1.1378▼-2 pipsユーロドル 予想レンジ1.1351 〜 1.1408ユーロドル 上の節目1.1403▲ユーロドル 下の節目1.1359▼きょうの指標重要指標なし