ネットで見つけた古いサンプルコードをコピペすると、

`ObjectSet`・`MarketInfo`・

`IsTradeContextBusy`のような関数に、

出会うことがあります。

これらは今でも動きますが、

本サイトの既刊記事群で個別に触れてきた通り、

型別に整理された現行の専用関数が用意されています。

この記事では、その置き換えを1枚の表にまとめ、

なぜ置き換えが進んでいるのか、公式リファレンスで実際に確認できる記載まで含めて整理します。

この記事で分かること
・ObjectSet/ObjectGet→型別の専用関数への置き換え
・MarketInfo→SymbolInfoDouble系への置き換え
・IsTradeContextBusy→IsTradeAllowedへの置き換え
・公式リファレンスに『非推奨』と明記されているかどうかの実際の確認結果
  1. なぜこの一覧が必要なのか
    1. 古いサンプルコードには古い関数が残っている
    2. 本サイトでも個別の記事で繰り返し触れてきた
    3. この記事はハブ記事として機能する
  2. 古い書き方の関数と現行APIの対応表
    1. 対応表
    2. なぜ型別に分かれた形式へ進んでいるのか
  3. 公式リファレンスで実際に確認できる記載
    1. 「非推奨」という単語そのものは書かれていない
    2. ページ上で後継関数が優先的に案内されている
    3. 本記事での表現の選び方
  4. 個別の置き換えで気をつけること
    1. ObjectGet/ObjectSetは戻り値の型が変わる
    2. MarketInfoのMODE_定数とENUM識別子の対応
    3. IsTradeContextBusyは判定の意味が違う
  5. 既刊記事群との関係(ハブとしての使い方)
    1. 詳しい使い方は個別記事を読む
    2. 新しいコードを書くときのチェックリストとして使う
  6. よくあるエラーと注意点
    1. 古い関数と新しい関数を混在させてコンパイルエラーになる
    2. 置き換え後に動作が変わることがある
    3. 古い関数が使えなくなるわけではない
  7. この一覧表の使いどころと限界
    1. 新規コードを書くときの指針になる
    2. 本記事に載っていない関数もある
  8. よくある質問
    1. 古い関数を使うとコンパイルエラーになりますか?
    2. MQL5にも同じような古い関数はありますか?
    3. 表に載っている関数以外にも置き換えるべきものはありますか?
  9. 【MQL4】ObjectSet・MarketInfo・IsTradeContextBusyなど「古い書き方」の関数一覧と現行APIへの置き換え表についてわかりやすく解説してみた:まとめ
    1. 関連記事

なぜこの一覧が必要なのか

まず、この記事を作った理由を確認します。

古いサンプルコードには古い関数が残っている

MQL4は長年使われている言語のため、

ネット上のサンプルコードには古い書き方のものが数多く残っています。

本サイトでも個別の記事で繰り返し触れてきた

補足
・既刊のObjectGet/ObjectSetの記事で扱った
・既刊istradeallowed-mt4.mdで扱った
・既刊symbolinfodouble-marketinfo-mt4.mdで扱った
・それぞれ個別記事では断片的だった情報を、本記事で1枚の表にまとめる

この記事はハブ記事として機能する

個々の関数の詳しい使い方は既刊の個別記事に任せ、

この記事では「どれを、何に置き換えるべきか」の全体像だけを示します。

古い書き方の関数と現行APIの対応表

実際の対応関係を表で確認します。

対応表

古い関数 現行の専用関数 用途
ObjectGet ObjectGetDouble/ObjectGetInteger/ObjectGetString オブジェクトのプロパティ取得
ObjectSet ObjectSetDouble/ObjectSetInteger オブジェクトのプロパティ設定
MarketInfo SymbolInfoDouble/SymbolInfoInteger/SymbolInfoString シンボル情報の取得
IsTradeContextBusy IsTradeAllowed 取引コンテキストの確認

4つとも「1つの関数が何でも返す」形式から、

「型ごとに専用の関数を使う」形式へ変わっている点が共通しています。

なぜ型別に分かれた形式へ進んでいるのか

MQL5で導入された「プロパティの型ごとに関数を分ける」という設計が、

後からMQL4側にも整備された、という順序で進んだ変更です。

公式リファレンスで実際に確認できる記載

ここが本記事の一番重要な点です。

「非推奨」という単語そのものは書かれていない

注意
・2026-10-20にdocs.mql4.comの4ページを直接確認した
・4つの関数のページを確認した
・『非推奨』『deprecated』『obsolete』という単語は見当たらなかった
・『古い関数だから使ってはいけない』という断定はできない

ページ上で後継関数が優先的に案内されている

ObjectSet/ObjectGetのページ下部には、

ObjectSetDouble/Integer/String・

ObjectGetDouble/Integer/Stringが、

関連関数として列挙されています。

MarketInfoのページのナビゲーションにも、

SymbolInfoDouble等の後継関数群が並んでいます。

本記事での表現の選び方

このような事実を踏まえ、

本記事では「公式に非推奨と明記されている」という誇張した表現は使わず、

「型別に整理された現行APIが用意されている」という正確な表現に統一しました。

個別の置き換えで気をつけること

表だけでは分からない、実務上の注意点を補足します。

ObjectGet/ObjectSetは戻り値の型が変わる

旧`ObjectGet()`は常に`double`型で返しますが、

新しい`ObjectGetInteger()`は`long`型、

`ObjectGetString()`は`string`型で返すため、

置き換え時に変数の型も合わせて直す必要があります。

MarketInfoのMODE_定数とENUM識別子の対応

`MarketInfo(symbol, MODE_BID)`は、

`SymbolInfoDouble(symbol, SYMBOL_BID)`に対応します。

既刊symbolinfodouble-marketinfo-mt4.mdの対応表で、

他のMODE_定数も合わせて確認してください。

IsTradeContextBusyは判定の意味が違う

実務上の違い
・IsTradeContextBusy():取引スレッドが処理中かどうかだけを確認する
・IsTradeAllowed():AutoTradingボタン
・EAプロパティの両方を反映した許可状態を確認する
・単純な置き換えではなく、確認したい内容自体が異なる点に注意

既刊記事群との関係(ハブとしての使い方)

この記事をどう使うかを整理します。

詳しい使い方は個別記事を読む

本記事はあくまで一覧表であり、

各関数の引数や具体的なコード例は、既刊の個別記事を参照してください。

新しいコードを書くときのチェックリストとして使う

ネットのサンプルコードをコピペした後、

この表に載っている古い関数が含まれていないかを確認する用途で使えます。

よくあるエラーと注意点

実際に置き換える際につまずきやすい点です。

古い関数と新しい関数を混在させてコンパイルエラーになる

注意
・ObjectGet()の戻り値をlong型の変数に直接代入しようとすると警告が出る
・型変換(long)・(double)等を明示的に挟む必要がある場面がある

置き換え後に動作が変わることがある

特にIsTradeContextBusy→IsTradeAllowedは、

「判定の意味自体が違う」ため、

単純な書き換えではEAの挙動が変わる可能性があります。

古い関数が使えなくなるわけではない

本記事で紹介した古い関数は、

2026年時点のMetaEditorでも問題なくコンパイル・実行できます。

既存の動いているコードを無理に書き換える必要はありません。

この一覧表の使いどころと限界

得意な場面と、対応できない場面を整理します。

新規コードを書くときの指針になる

これから新しくEA・インジケーターを作る場合は、

最初から現行の専用関数を使うことで、将来的な書き換えの手間を避けられます。

本記事に載っていない関数もある

この記事では本サイトの既刊記事が扱った4つの関数に絞っています。

他の古い関数については、

個別にMQL4公式リファレンスの関連関数欄を確認することを推奨します。

よくある質問

古い関数と現行APIの置き換えについて、よく検索される疑問に回答します。

実践アドバイス
・既存の動いているEAは無理に書き換えない
・新規に書くコードだけ、最初から現行の専用関数を使う
・型変換のコンパイル警告が出たら、まず型の不一致を疑う

古い関数を使うとコンパイルエラーになりますか?

なりません。

本記事で紹介した4つの関数は、

2026年時点のMetaEditorでも正常にコンパイル・実行できます。

MQL5にも同じような古い関数はありますか?

MQL5は最初から型別の専用関数が整備された言語設計のため、

本記事のような大規模な置き換えの歴史はありません。

ただしMQL5にもOrderSend等、MQL4版と別物として扱うべき関数はあります。

表に載っている関数以外にも置き換えるべきものはありますか?

可能性はあります。

本記事は本サイトの既刊記事が実際に扱った4つの関数に絞っているため、

網羅的な一覧ではありません。

気になる関数があれば、

MQL4公式リファレンスのそのページ下部にある関連関数欄を確認してください。

【MQL4】ObjectSet・MarketInfo・IsTradeContextBusyなど「古い書き方」の関数一覧と現行APIへの置き換え表についてわかりやすく解説してみた:まとめ

この記事では、本サイトの既刊記事群が個別に扱ってきた、

ObjectSet・MarketInfo・IsTradeContextBusyという、

3つの古い関数と、

現行の専用関数との対応を1枚の表にまとめました。

公式リファレンスに『非推奨』と明記されているわけではありませんが、

後継関数が優先的に案内されている事実を踏まえ、

新規コードでは現行の専用関数を使うことを推奨します。

関連記事