MQL5標準ライブラリ辞典|CTrade・CPositionInfo・COrderInfo・CDealInfo一覧
MQL5でEAを開発する場合、標準ライブラリを使うと、発注、ポジション確認、注文確認、約定履歴確認、銘柄仕様確認、口座情報確認をクラス単位で扱いやすくなります。
特に、CTrade、CPositionInfo、COrderInfo、CDealInfo、CSymbolInfo、CAccountInfo、Buy / Sell、PositionClose、ResultRetcode、CheckResult は、EA開発や不具合調査で頻繁に確認する項目です。
この記事では、MQL5標準ライブラリの主要クラス・メソッドを、EA開発や不具合調査で確認しやすい辞典形式で整理します。公式リファレンスの丸写しではなく、どのクラスを、どの場面で使い、どの戻り値・retcode・ログを確認するかを整理するための記事です。
注意:この記事はMQL5開発・EA動作確認・注文処理・ポジション管理・不具合調査のための技術解説です。特定の売買判断、推奨エントリー、推奨ロット、推奨銘柄、利益保証、勝率保証、損失回避保証を行うものではありません。実運用前には、必ずデモ環境や検証環境で動作を確認してください。
MQL5標準ライブラリとは
MQL5標準ライブラリは、MQL5に用意されているクラス群です。取引処理、ポジション情報、注文情報、約定履歴、銘柄仕様、口座状態などを、関数を直接呼び出すよりも扱いやすい形で整理できます。
ただし、標準ライブラリを使えば必ず安全になるわけではありません。CTradeを使っても、発注失敗、retcode不一致、filling方式不一致、StopsLevel違反、証拠金不足、ロット不正、接続不安定などは発生します。標準ライブラリを使う場合でも、戻り値、ResultRetcode、CheckResult、Expertsログ、Journalログを確認することが重要です。
| 分類 | 主な用途 | 代表クラス・メソッド | 確認すること |
|---|---|---|---|
| 取引操作 | 成行発注、決済、注文変更、注文削除 | CTrade、Buy、Sell、PositionClose | 戻り値、ResultRetcode、ResultComment、発注対象 |
| ポジション確認 | 保有中ポジションの確認 | CPositionInfo | ticket、symbol、magic、type、volume、profit |
| 注文確認 | 未約定注文、注文履歴の確認 | COrderInfo | order ticket、type、state、price、expiration |
| 約定確認 | 履歴上の約定情報確認 | CDealInfo | deal ticket、type、entry、profit、magic、comment |
| 銘柄仕様確認 | point、digits、spread、ロット条件、StopsLevel確認 | CSymbolInfo | Point、Digits、LotsMin、LotsStep、StopsLevel、Spread |
| 口座情報確認 | 残高、有効証拠金、余剰証拠金、証拠金維持率確認 | CAccountInfo | Balance、Equity、Margin、FreeMargin、MarginLevel |
| 発注前確認 | 注文条件が通るか事前確認 | CheckResult、OrderCheck系 | CheckResultRetcode、margin、comment、拒否理由 |
標準ライブラリを使う時の基本方針
標準ライブラリは、MQL5の取引関数や情報取得関数をクラスとして扱いやすくしたものです。EA開発では便利ですが、クラスを使うことと、注文結果を正しく検証することは別です。
| 確認項目 | 内容 | 注意点 |
|---|---|---|
| 戻り値 | Buy / Sell / PositionCloseなどの実行結果 | trueだけで完全成功と断定せず、retcodeも確認します。 |
| ResultRetcode | CTrade実行後の取引結果コード | TRADE_RETCODE_DONE、PLACED、REJECTなどを確認します。 |
| ResultComment | サーバー側コメント | 拒否理由や補足情報の確認に使います。 |
| CheckResult | OrderCheck結果 | 発注前の証拠金や条件確認に使います。 |
| SymbolInfo | 銘柄仕様 | ロット、point、StopsLevel、filling方式を確認します。 |
| AccountInfo | 口座状態 | 残高、有効証拠金、余剰証拠金を分けて確認します。 |
CTrade
CTradeは、MQL5標準ライブラリの取引操作用クラスです。成行発注、決済、注文変更、注文削除、SL/TP変更などを、OrderSendを直接組み立てるより簡潔に扱えます。
CTradeを使う場合でも、BuyやSellの戻り値、ResultRetcode、ResultComment、ResultOrder、ResultDealを確認してください。発注関数を呼び出したことと、取引サーバーで期待どおり処理されたことは同じではありません。
| クラス/メソッド | 用途 | 使う場面 | 確認する戻り値 | 注意点 | 関連ログ | 関連講座 |
|---|---|---|---|---|---|---|
| CTrade | 取引操作を扱う標準ライブラリクラス | EAの発注、決済、注文変更、注文削除 | 各メソッド戻り値、ResultRetcode、ResultComment | 戻り値だけでなくretcodeを確認します。 | TRADE_SEND、TRADE_RESULT、ORDER_FAIL | 標準ライブラリ・CTrade |
| Buy | 買い成行注文 | BUYエントリー、買い方向の新規発注 | true/false、ResultRetcode、ResultDeal | Ask、volume、SL/TP、deviation、filling方式を確認します。 | BUY_SEND、ORDER_RESULT | 注文関数・取引構造体 |
| Sell | 売り成行注文 | SELLエントリー、売り方向の新規発注 | true/false、ResultRetcode、ResultDeal | Bid、volume、SL/TP、deviation、filling方式を確認します。 | SELL_SEND、ORDER_RESULT | 注文関数・取引構造体 |
| PositionClose | 保有ポジションを決済する | 単体決済、条件決済、強制決済、手動補助決済 | true/false、ResultRetcode、ResultDeal | netting / hedging、ticket指定、symbol指定の違いに注意します。 | POSITION_CLOSE、CLOSE_RESULT | 注文・ポジション・履歴管理 |
| PositionModify | 保有ポジションのSL/TPを変更する | SL設定、TP設定、建値移動、trail | true/false、ResultRetcode | StopsLevel、FreezeLevel、価格方向を確認します。 | POSITION_MODIFY、TPSL_RESULT | ロット・証拠金・銘柄仕様 |
| OrderDelete | 未約定注文を削除する | pending order取消、期限切れ前の削除 | true/false、ResultRetcode | 保有Positionの決済とは別です。 | ORDER_DELETE、PENDING_CANCEL | 注文・ポジション・履歴管理 |
| SetExpertMagicNumber | CTradeで使うMagic Numberを設定する | EA別、ロジック別、チャート別の発注識別 | 設定値、発注後のmagic | 発注前に設定し、履歴やPositionで確認します。 | MAGIC_SET、REQUEST_DUMP | 注文・ポジション・履歴管理 |
| SetDeviationInPoints | 許容スリッページを設定する | 成行発注、決済時の価格ズレ許容 | 設定値、発注結果 | 銘柄のpointと混同しないようにします。 | DEVIATION_SET、ORDER_SEND | 注文関数・取引構造体 |
| SetTypeFilling | 約定方式を設定する | FOK、IOC、RETURNなどのfilling指定 | 設定値、ResultRetcode | SYMBOL_FILLING_MODEと整合させます。 | FILLING_SET、INVALID_FILL | 列挙型・定数 |
CTradeで確認すること
| 確認項目 | 内容 | 理由 |
|---|---|---|
| volume | 発注ロット | SYMBOL_VOLUME_MIN、SYMBOL_VOLUME_STEP、SYMBOL_VOLUME_MAXに合うか確認するため |
| price | 発注価格または決済価格 | BUYはAsk、SELLはBidを基準に確認するため |
| sl / tp | 損切り・利確価格 | StopsLevel、FreezeLevel、価格方向の確認に必要なため |
| deviation | 許容価格差 | 成行注文や決済の拒否理由確認に関係するため |
| magic | Magic Number | EA別・ロジック別のPosition / History確認に必要なため |
| retcode | 取引結果コード | 注文受付、約定、拒否、エラーを判定するため |
CPositionInfo
CPositionInfoは、保有中ポジションの情報を確認するための標準ライブラリクラスです。PositionGetInteger、PositionGetDouble、PositionGetStringを直接使う代わりに、クラスメソッドでポジション情報を取得できます。
| クラス/メソッド | 用途 | 使う場面 | 確認する戻り値 | 注意点 | 関連ログ | 関連講座 |
|---|---|---|---|---|---|---|
| CPositionInfo | 保有中Position情報を扱うクラス | Positionスキャン、保有確認、決済対象確認 | Select結果、各プロパティ値 | OrderやDealとは対象が違います。 | POSITION_SNAPSHOT、POSITION_SCOPE | 注文・ポジション・履歴管理 |
| Select | symbolでポジションを選択する | netting口座やsymbol単位確認 | true/false | hedging口座ではticket単位確認が必要な場合があります。 | POSITION_SELECT、POSITION_MISSING | 注文・ポジション・履歴管理 |
| SelectByTicket | ticketでポジションを選択する | hedging口座、複数ポジション管理 | true/false | ticketの有効性と対象symbolを確認します。 | POSITION_SELECT_TICKET | 注文・ポジション・履歴管理 |
| Ticket | Position ticketを取得する | 決済対象、modify対象、ログ追跡 | ticket | order ticketやdeal ticketと混同しないようにします。 | POSITION_TICKET | ポジション・履歴用語 |
| Symbol | Positionの銘柄を取得する | チャート銘柄との照合 | symbol文字列 | suffix付き銘柄や別銘柄混在に注意します。 | POSITION_SYMBOL | 時系列・価格取得 |
| Magic | PositionのMagic Numberを取得する | EA別、ロジック別、裁量注文との分離 | magic値 | 0は手動注文や未設定注文として扱う場合があります。 | POSITION_MAGIC | ポジション・履歴用語 |
| PositionType | BUY / SELL方向を取得する | 方向別決済、方向別集計 | POSITION_TYPE_BUY / SELL | OrderTypeとは別です。 | POSITION_TYPE | 列挙型・定数 |
| Volume | 保有ロットを取得する | ロット集計、basket計算、部分決済確認 | volume | 最小ロットやlot stepと合わせて確認します。 | POSITION_VOLUME | ロット・証拠金・銘柄仕様 |
| PriceOpen | 建値を取得する | 含み損益、SL/TP、basket平均価格確認 | open price | BUY/SELLで損益方向が変わります。 | POSITION_PRICE_OPEN | 時系列・価格取得 |
| Profit | 含み損益を取得する | risk表示、損益条件、決済条件 | profit | EA別損益か口座全体損益かを分けます。 | POSITION_PROFIT | 注文・ポジション・履歴管理 |
COrderInfo
COrderInfoは、注文情報を扱うための標準ライブラリクラスです。現在の未約定注文や履歴注文の確認で使います。PositionやDealとは確認対象が異なるため、Order、Position、Dealを分けて扱うことが重要です。
| クラス/メソッド | 用途 | 使う場面 | 確認する戻り値 | 注意点 | 関連ログ | 関連講座 |
|---|---|---|---|---|---|---|
| COrderInfo | 注文情報を扱うクラス | 未約定注文、注文履歴、pending order確認 | Select結果、orderプロパティ | PositionやDealとは別対象です。 | ORDER_SNAPSHOT、ORDER_AUDIT | 注文・ポジション・履歴管理 |
| Select | 注文を選択する | 注文一覧スキャン、pending確認 | true/false | 現在注文か履歴注文かを分けます。 | ORDER_SELECT | 注文関数・取引構造体 |
| Ticket | 注文ticketを取得する | 注文変更、削除、履歴追跡 | order ticket | position ticketやdeal ticketと混同しないようにします。 | ORDER_TICKET | ポジション・履歴用語 |
| OrderType | 注文種別を取得する | BUY / SELL / LIMIT / STOPの確認 | ENUM_ORDER_TYPE | POSITION_TYPEとは別です。 | ORDER_TYPE | 列挙型・定数 |
| State | 注文状態を取得する | 配置済み、約定済み、取消済み、期限切れ確認 | ENUM_ORDER_STATE | 履歴注文ではDeal履歴も合わせて確認します。 | ORDER_STATE | 列挙型・定数 |
| PriceOpen | 注文価格を取得する | pending価格、発注価格確認 | price | 現在価格との位置関係を確認します。 | ORDER_PRICE_OPEN | 時系列・価格取得 |
| VolumeInitial | 初期注文数量を取得する | 注文数量確認、部分約定確認 | volume | 現在残量と分けて確認します。 | ORDER_VOLUME_INITIAL | 注文・ポジション・履歴管理 |
| VolumeCurrent | 現在残量を取得する | 部分約定後の残量確認 | volume | filling方式や部分約定と関係します。 | ORDER_VOLUME_CURRENT | 注文関数・取引構造体 |
CDealInfo
CDealInfoは、約定履歴を扱うための標準ライブラリクラスです。売買損益、決済履歴、Magic Number別履歴、EA別集計、日次集計を行う時に使います。
Deal履歴では、BUY / SELLだけで新規・決済を断定しないようにします。DEAL_TYPE、DEAL_ENTRY、DEAL_PROFIT、DEAL_MAGIC、DEAL_COMMENTなどを組み合わせて確認します。
| クラス/メソッド | 用途 | 使う場面 | 確認する戻り値 | 注意点 | 関連ログ | 関連講座 |
|---|---|---|---|---|---|---|
| CDealInfo | 約定履歴を扱うクラス | 履歴確認、損益集計、EA別履歴確認 | Select結果、dealプロパティ | OrderやPositionとは対象が違います。 | DEAL_AUDIT、HISTORY_AUDIT | 注文・ポジション・履歴管理 |
| Ticket | deal ticketを取得する | 履歴追跡、CSV出力、問い合わせ時の特定 | deal ticket | order ticketやposition ticketと混同しないようにします。 | DEAL_TICKET | ポジション・履歴用語 |
| DealType | 約定種別を取得する | BUY / SELL / balance等の分類 | ENUM_DEAL_TYPE | 新規・決済の判断にはDEAL_ENTRYも確認します。 | DEAL_TYPE | 列挙型・定数 |
| Entry | 新規・決済・反転などの区分を取得する | 損益集計、決済履歴確認 | DEAL_ENTRY | DEAL_TYPEだけで決済と断定しないようにします。 | DEAL_ENTRY | 注文・ポジション・履歴管理 |
| Profit | 約定損益を取得する | 日次損益、EA別損益、決済結果確認 | profit | 手数料・スワップを別確認する場合があります。 | DEAL_PROFIT | 注文・ポジション・履歴管理 |
| Magic | 約定のMagic Numberを取得する | EA別、ロジック別の履歴集計 | magic | 手動注文や外部注文との分離に使います。 | DEAL_MAGIC | ポジション・履歴用語 |
| Comment | 約定コメントを取得する | EA識別、外部連携、履歴調査 | comment文字列 | 長すぎるコメントやブローカー側変更に注意します。 | DEAL_COMMENT | 注文・ポジション・履歴管理 |
CSymbolInfo
CSymbolInfoは、銘柄仕様や現在価格を扱うための標準ライブラリクラスです。ロット条件、point、digits、spread、StopsLevel、FreezeLevel、Bid、Askなどを確認する時に使います。
| クラス/メソッド | 用途 | 使う場面 | 確認する戻り値 | 注意点 | 関連ログ | 関連講座 |
|---|---|---|---|---|---|---|
| CSymbolInfo | 銘柄仕様・価格情報を扱うクラス | 発注前確認、価格表示、ロットvalidation | Name、RefreshRates結果、各プロパティ | 銘柄ごとの仕様差をログに残します。 | SYMBOL_SPEC、PRICE_SNAPSHOT | ロット・証拠金・銘柄仕様 |
| Name | 対象銘柄名を取得または設定する | チャート銘柄、別銘柄、suffix銘柄確認 | symbol文字列 | ブローカーごとのsuffixに注意します。 | SYMBOL_NAME | 時系列・価格取得 |
| RefreshRates | 最新価格を更新する | 発注前、決済前、spread確認前 | true/false | 価格未更新や休場時の確認が必要です。 | PRICE_REFRESH、TICK_READ | 時系列・価格取得 |
| Bid | Bid価格を取得する | SELL価格、BUY決済、spread計算 | Bid値 | BUY発注価格とは異なります。 | BID_CHECK | 時系列・価格取得 |
| Ask | Ask価格を取得する | BUY価格、SELL決済、spread計算 | Ask値 | SELL発注価格とは異なります。 | ASK_CHECK | 時系列・価格取得 |
| Point | 最小価格単位を取得する | SL/TP距離、spread、point換算 | point値 | GOLDや指数などで値が異なります。 | POINT_CHECK | ロット・証拠金・銘柄仕様 |
| Digits | 価格小数桁を取得する | 価格丸め、表示、NormalizeDouble | digits値 | 固定桁数で決め打ちしないようにします。 | DIGITS_CHECK | 列挙型・定数 |
| LotsMin | 最小ロットを取得する | ロットvalidation | 最小ロット | 最小未満の注文は拒否されます。 | LOT_SPEC | ロット・証拠金・銘柄仕様 |
| LotsStep | ロット刻みを取得する | ロット丸め、NormalizeVolume | lot step | step不一致はINVALID_VOLUMEの原因になります。 | LOT_STEP | ロット・証拠金・銘柄仕様 |
| StopsLevel | SL/TPやpending価格の最小距離を取得する | SL/TP設定、pending注文作成 | stops level | INVALID_STOPS対策で重要です。 | STOPS_CHECK | 注文関数・取引構造体 |
| Spread | スプレッドを取得する | spread制限、発注前確認 | spread値 | point単位か価格差かを明確にします。 | SPREAD_CHECK | 時系列・価格取得 |
CAccountInfo
CAccountInfoは、口座情報を扱う標準ライブラリクラスです。残高、有効証拠金、余剰証拠金、証拠金維持率、レバレッジ、口座通貨などを確認できます。
| クラス/メソッド | 用途 | 使う場面 | 確認する戻り値 | 注意点 | 関連ログ | 関連講座 |
|---|---|---|---|---|---|---|
| CAccountInfo | 口座情報を扱うクラス | risk表示、発注前確認、証拠金確認 | 各口座プロパティ | EA別損益と口座全体情報を混同しないようにします。 | ACCOUNT_STATE、MARGIN_CHECK | ロット・証拠金・銘柄仕様 |
| Balance | 口座残高を取得する | ロット計算、日次確認 | balance | 含み損益は反映されません。 | ACCOUNT_BALANCE | 列挙型・定数 |
| Equity | 有効証拠金を取得する | 含み損益込みの口座状態確認 | equity | Balanceとは異なります。 | ACCOUNT_EQUITY | ロット・証拠金・銘柄仕様 |
| Margin | 使用中証拠金を取得する | 保有中ポジションの証拠金確認 | margin | 保有状態により変化します。 | ACCOUNT_MARGIN | ロット・証拠金・銘柄仕様 |
| FreeMargin | 余剰証拠金を取得する | 発注前の余力確認 | free margin | NO_MONEY対策で確認します。 | ACCOUNT_FREE_MARGIN | 注文関数・取引構造体 |
| MarginLevel | 証拠金維持率を取得する | risk制御、口座状態表示 | margin level | ポジション増減や価格変動で急変します。 | MARGIN_LEVEL | ロット・証拠金・銘柄仕様 |
| Currency | 口座通貨を取得する | 損益表示、リスク計算、通貨換算確認 | currency文字列 | JPY、USD、cent口座などの違いに注意します。 | ACCOUNT_CURRENCY | ロット・証拠金・銘柄仕様 |
Buy / Sell / PositionClose
Buy、Sell、PositionCloseは、CTradeで特によく使うメソッドです。EAの基本的な新規発注と決済に関係するため、戻り値とResultRetcodeをセットで確認します。
| メソッド | 用途 | 使う場面 | 確認する戻り値 | 注意点 | 関連ログ |
|---|---|---|---|---|---|
| Buy | 買い成行注文 | BUYシグナル成立後の新規発注 | true/false、ResultRetcode、ResultDeal、ResultOrder | Ask、volume、SL/TP、spread、filling方式を確認します。 | BUY_SEND、ORDER_RESULT、ENTRY_EXEC |
| Sell | 売り成行注文 | SELLシグナル成立後の新規発注 | true/false、ResultRetcode、ResultDeal、ResultOrder | Bid、volume、SL/TP、spread、filling方式を確認します。 | SELL_SEND、ORDER_RESULT、ENTRY_EXEC |
| PositionClose | ポジション決済 | 条件決済、手動補助決済、risk決済 | true/false、ResultRetcode、ResultDeal | ticket指定、symbol指定、hedging / netting差に注意します。 | CLOSE_SEND、CLOSE_RESULT、EXIT_EXEC |
確認ポイント:Buy / Sell / PositionCloseの戻り値がtrueでも、期待どおりに約定・決済されたかはResultRetcode、ResultDeal、Position状態、History履歴で確認してください。
ResultRetcodeとCheckResult
ResultRetcodeは、CTradeで取引操作を行った後に、取引サーバーから返された結果コードを確認するために使います。CheckResultは、OrderCheckによる発注前確認結果を確認するために使います。
| 項目 | 用途 | 使う場面 | 確認すること | 注意点 | 関連ログ |
|---|---|---|---|---|---|
| ResultRetcode | 取引実行後のretcode確認 | Buy、Sell、PositionClose、OrderDeleteなどの後 | TRADE_RETCODE_DONE、PLACED、REJECT、INVALID_VOLUMEなど | 戻り値だけでなく必ず確認します。 | RESULT_RETCODE、ORDER_RESULT |
| ResultComment | 取引結果コメント確認 | 注文拒否、価格不正、条件不備の補足確認 | comment文字列 | ブローカーやサーバーにより表記が異なる場合があります。 | RESULT_COMMENT |
| ResultOrder | 注文ticket確認 | 注文受付後、pending作成後 | order ticket | deal ticketとは別です。 | RESULT_ORDER |
| ResultDeal | 約定ticket確認 | 成行約定、決済約定後 | deal ticket | 約定がない場合は0になることがあります。 | RESULT_DEAL |
| CheckResult | 発注前確認結果 | OrderCheck、証拠金・条件確認 | retcode、margin、comment | Checkが通っても実発注時に失敗する場合があります。 | CHECK_RESULT、ORDER_CHECK |
OrderSend直接実装との違い
CTradeは便利ですが、内部では取引リクエストを組み立てて取引操作を行います。細かい制御や詳細なrequestログを重視する場合は、MqlTradeRequest、MqlTradeResult、OrderSend、OrderCheckを直接使う設計もあります。
| 比較項目 | CTradeを使う場合 | OrderSend直接実装の場合 | 確認ポイント |
|---|---|---|---|
| 実装量 | 短く書きやすい | requestを自分で組み立てるため長くなりやすい | 保守性と詳細制御のどちらを優先するか |
| 発注制御 | 標準メソッドで扱いやすい | action、type、price、fillingなどを明示できる | 特殊注文や詳細ログが必要か |
| ログ追跡 | ResultRetcode等を確認する | request / resultを丸ごと記録しやすい | ORDER_FAIL時の追跡粒度 |
| 学習しやすさ | EA初期開発では扱いやすい | MQL5の取引構造を理解しやすい | 開発者の習熟度 |
| 拡張性 | 一般的なEAでは十分な場合が多い | 特殊なretry、filling、複雑な注文制御に向く | 将来の拡張範囲 |
| 不具合調査 | retcodeとCTrade結果を確認する | request内容とresultを細かく照合できる | ログ設計の有無 |
EA利用者向けの確認ポイント
EAが発注しない、決済しない、注文エラーが出る、ポジションが選択されない、履歴集計が合わない場合は、標準ライブラリの使い方そのものよりも、戻り値、retcode、対象ticket、symbol、magic、銘柄仕様、口座状態の確認が重要です。
| 確認すること | 内容 | 開発者へ伝えるとよい情報 |
|---|---|---|
| EA名・バージョン | 設置しているEA名と版 | 対象仕様を特定するため |
| 対象機能 | 新規発注、決済、SL/TP変更、pending削除、履歴集計など | CTrade、CPositionInfo、CDealInfoなど見る範囲を絞るため |
| 銘柄・時間足 | symbol、timeframe、ブローカー表記 | CSymbolInfoや価格取得の確認に必要です。 |
| 注文結果 | ResultRetcode、ResultComment、GetLastError | 発注拒否や条件不一致を確認するため |
| ポジション状態 | ticket、type、volume、magic、profit | CPositionInfoで正しく選択できているか確認するため |
| 履歴状態 | deal、order、entry、profit、magic | CDealInfoやCOrderInfoの確認に必要です。 |
| Expertsログ | ORDER_SEND、RESULT_RETCODE、POSITION_SNAPSHOTなど | EA内部で何を実行したか確認するため |
| Journalログ | 端末側・取引サーバー側ログ | サーバー拒否や接続状態を確認するため |
| setファイル | Inputs設定 | ロット、Magic、spread、filling、risk条件の再現に必要です。 |
| スクリーンショット | チャート、設定、ログ、取引タブ、履歴タブ | 表示状態とログを照合するために役立ちます。 |
MQL5開発者向けの実装確認ポイント
MQL5開発では、標準ライブラリを使う場合でも、signal、execution、risk、exit、history、symbol spec、account stateを分けて設計することが重要です。
| 責務 | 主な確認対象 | 実装上の注意 | 確認ログ |
|---|---|---|---|
| execution | CTrade、Buy、Sell、PositionClose | 戻り値、ResultRetcode、ResultCommentを必ず確認します。 | ORDER_SEND、ORDER_RESULT、CLOSE_RESULT |
| position snapshot | CPositionInfo | symbol、ticket、magic、type、volume、profitを分けて確認します。 | POSITION_SNAPSHOT、POSITION_SCOPE |
| order audit | COrderInfo | pending orderと履歴注文を分けて確認します。 | ORDER_AUDIT、PENDING_SCAN |
| deal history | CDealInfo | DEAL_TYPEとDEAL_ENTRYをセットで確認します。 | DEAL_AUDIT、HISTORY_AUDIT |
| symbol validation | CSymbolInfo | point、digits、lot step、StopsLevel、spreadを確認します。 | SYMBOL_SPEC、LOT_SPEC、STOPS_CHECK |
| account validation | CAccountInfo | balance、equity、free margin、margin levelを分けます。 | ACCOUNT_STATE、MARGIN_CHECK |
| precheck | CheckResult、OrderCheck | 発注前確認と実発注結果を混同しないようにします。 | ORDER_CHECK、CHECK_RESULT |
実装時の注意点
- CTradeの戻り値だけで成功判定を完結しない
- ResultRetcode、ResultComment、ResultOrder、ResultDealをログに残す
- Buy / Sell前にvolume、price、SL/TP、spread、filling方式を確認する
- PositionCloseではticket指定とsymbol指定の違いを確認する
- CPositionInfoではOrderやDealとticketを混同しない
- CDealInfoではDEAL_TYPEとDEAL_ENTRYをセットで確認する
- CSymbolInfoでpoint、digits、lot step、StopsLevelを確認する
- CAccountInfoでBalanceとEquityを混同しない
- CheckResultは発注前確認であり、実発注成功とは別に扱う
- 標準ライブラリを使う場合でも、ExpertsログとJournalログを必ず確認する
標準ライブラリ主要クラス・メソッド辞典表
| クラス/メソッド | 用途 | 使う場面 | 確認する戻り値 | 注意点 | 関連ログ | 関連講座 |
|---|---|---|---|---|---|---|
| CTrade | 取引操作クラス | 発注、決済、SL/TP変更、注文削除 | 各メソッド戻り値、ResultRetcode | retcode確認を省略しない | TRADE_RESULT | 標準ライブラリ・CTrade |
| Buy | 買い成行注文 | BUYエントリー | true/false、ResultRetcode、ResultDeal | Ask、volume、SL/TPを確認 | BUY_SEND | 注文関数・取引構造体 |
| Sell | 売り成行注文 | SELLエントリー | true/false、ResultRetcode、ResultDeal | Bid、volume、SL/TPを確認 | SELL_SEND | 注文関数・取引構造体 |
| PositionClose | ポジション決済 | 条件決済、手動補助決済、risk決済 | true/false、ResultRetcode、ResultDeal | hedging / netting差に注意 | CLOSE_RESULT | 注文・ポジション・履歴管理 |
| ResultRetcode | 取引結果コード確認 | CTrade実行後 | TRADE_RETCODE | 戻り値と別に確認 | RESULT_RETCODE | エラーコード辞典 |
| CheckResult | 発注前確認結果 | OrderCheck後、証拠金確認 | retcode、margin、comment | 実発注成功とは別 | CHECK_RESULT | 注文関数・取引構造体 |
| CPositionInfo | 保有ポジション情報 | Positionスキャン、保有確認、決済対象確認 | Select結果、ticket、type、volume | Order / Dealと混同しない | POSITION_SNAPSHOT | ポジション・履歴用語 |
| COrderInfo | 注文情報 | pending order確認、注文履歴確認 | Select結果、type、state、price | Positionとは別対象 | ORDER_AUDIT | 注文・ポジション・履歴管理 |
| CDealInfo | 約定履歴情報 | 履歴確認、損益集計、EA別集計 | deal ticket、type、entry、profit | DEAL_TYPEだけで新規/決済を断定しない | DEAL_AUDIT | ポジション・履歴用語 |
| CSymbolInfo | 銘柄仕様・価格情報 | 発注前確認、ロット確認、spread確認 | Point、Digits、LotsStep、StopsLevel | 銘柄差・ブローカー差を確認 | SYMBOL_SPEC | ロット・証拠金・銘柄仕様 |
| CAccountInfo | 口座情報 | risk確認、証拠金確認、口座状態表示 | Balance、Equity、FreeMargin | 口座全体情報とEA別損益を分ける | ACCOUNT_STATE | ロット・証拠金・銘柄仕様 |
開発依頼前に整理する情報
標準ライブラリ、CTrade、Position確認、Order確認、Deal履歴、銘柄仕様、口座情報まわりの不具合調査や改修依頼を行う場合は、次の情報を整理してください。
| 整理する情報 | 内容 | 理由 |
|---|---|---|
| 対象EA名・インジ名・バージョン | mq5/ex5名、商品名、バージョン | 対象ファイルと仕様を特定するため |
| 対象機能 | 発注、決済、SL/TP変更、pending削除、履歴集計など | CTrade、CPositionInfo、CDealInfoなど見る範囲を分けるため |
| 対象銘柄・時間足 | symbol、timeframe、ブローカー表記 | CSymbolInfo、価格取得、spread確認に必要です。 |
| 注文条件 | Buy / Sell、volume、SL/TP、deviation、filling方式 | CTrade実行時の条件確認に必要です。 |
| retcode | ResultRetcode、ResultComment、GetLastError | 注文結果・拒否理由を確認するため |
| Position情報 | ticket、symbol、magic、type、volume、profit | CPositionInfoで選択対象を確認するため |
| Order / Deal履歴 | order ticket、deal ticket、type、entry、profit、magic | COrderInfo / CDealInfoで履歴を照合するため |
| 銘柄仕様 | point、digits、lot step、StopsLevel、spread、filling mode | INVALID_VOLUME、INVALID_STOPS、INVALID_FILL確認に必要です。 |
| 口座情報 | Balance、Equity、FreeMargin、MarginLevel | NO_MONEYやrisk制御の確認に必要です。 |
| Expertsログ | ORDER_SEND、RESULT_RETCODE、POSITION_SNAPSHOT、HISTORY_AUDITなど | EA内部の実行経路を追うため |
| Journalログ | 端末側・サーバー側ログ | サーバー拒否や接続状態を確認するため |
| setファイル | Inputs設定 | ロット、Magic、risk、filling、spread条件の再現に必要です。 |
| スクリーンショット | チャート、設定画面、Expertsログ、Journalログ、取引タブ、履歴タブ | 表示状態とログを照合するため |
送ってはいけない情報:口座パスワード、投資家パスワード、Webhook URL、GAS URL、APIキー、認証トークン、口座番号の全桁、個人情報は、そのまま送らないでください。必要に応じて必ずマスクしてください。
関連するMQL5技術辞典
標準ライブラリの確認では、関数全体、エラーコード、注文処理、ポジション・履歴、インジケーター、時系列取得、ファイル操作、チャートオブジェクト、列挙型・定数の理解も関係します。関連するMQL5技術辞典もあわせて確認してください。
| 技術辞典 | 確認できる内容 | リンク |
|---|---|---|
| MQL5エラーコード辞典 | GetLastError、TRADE_RETCODE、コンパイルエラー、WebRequest、Strategy Tester関連エラーを確認できます。 | MQL5エラーコード辞典 |
| MQL5関数辞典 | EA・インジケーター開発で使う主要関数を、目的別・確認ログ別に確認できます。 | MQL5関数辞典 |
| MQL5注文関数・取引構造体辞典 | OrderSend、OrderCheck、MqlTradeRequest、MqlTradeResult、TRADE_RETCODEなどを確認できます。 | MQL5注文関数・取引構造体辞典 |
| MQL5ポジション・注文・約定・履歴用語辞典 | Order、Position、Deal、History、ticket、magic、commentなど、取引管理で混同しやすい用語を確認できます。 | MQL5ポジション・注文・約定・履歴用語辞典 |
| MQL5インジケーター関数辞典 | iCustom、CopyBuffer、SetIndexBuffer、OnCalculate、IndicatorRelease、buffer index、shiftなどを確認できます。 | MQL5インジケーター関数辞典 |
| MQL5時系列・価格取得関数辞典 | CopyRates、CopyClose、iClose、iTime、SymbolInfoDouble、TimeCurrentなどを確認できます。 | MQL5時系列・価格取得関数辞典 |
| MQL5ファイル操作関数辞典 | FileOpen、FileRead、FileWrite、FileClose、FILE_COMMON、CSV出力、ログ保存を確認できます。 | MQL5ファイル操作関数辞典 |
| MQL5チャートオブジェクト辞典 | ObjectCreate、ObjectSetInteger、ObjectSetString、OBJ_LABEL、OBJ_BUTTON、OnChartEventなどを確認できます。 | MQL5チャートオブジェクト辞典 |
| MQL5列挙型・定数辞典 | ENUM_TIMEFRAMES、ENUM_ORDER_TYPE、ORDER_FILLING、POSITION_TYPE、SymbolInfo系定数などを確認できます。 | MQL5列挙型・定数辞典 |
確認ポイント:標準ライブラリでは、CTradeの戻り値だけで判断せず、ResultRetcode、ResultComment、Position状態、Order履歴、Deal履歴、CSymbolInfo、CAccountInfoをセットで確認してください。
関連する技術講座
| 関連ページ | 確認できる内容 |
|---|---|
| 技術講座ハブ | MT5・MQL5・EA開発関連の技術講座一覧を確認できます。 |
| MQL5標準ライブラリ・CTrade完全ガイド | CTrade、Buy、Sell、PositionClose、ResultRetcodeの確認に使えます。 |
| MQL5注文・ポジション・履歴管理完全ガイド | Order、Position、Deal、History、ticket、magic、commentの確認に使えます。 |
| MQL5ロット・証拠金・銘柄仕様完全ガイド | CSymbolInfo、CAccountInfo、ロット条件、証拠金確認に使えます。 |
| MT5 EA・インジケーター開発代行の選び方 | EA作成、インジ作成、標準ライブラリ利用、改修依頼の違いを確認できます。 |
| MT5開発依頼前に用意する資料まとめ | 開発依頼前に整理するログ、setファイル、再現条件を確認できます。 |
FAQ
CTradeを使えばOrderSendを理解しなくてもよいですか?
基本的な発注はCTradeで扱いやすくなりますが、OrderSend、MqlTradeRequest、MqlTradeResultの考え方も理解しておくと、不具合調査や詳細なログ確認がしやすくなります。
BuyやSellの戻り値がtrueなら発注成功ですか?
trueだけで期待どおりの約定と断定しないでください。ResultRetcode、ResultDeal、ResultOrder、Position状態、History履歴を確認する必要があります。
PositionCloseで決済できない場合は何を確認しますか?
対象ticket、symbol、position type、volume、現在価格、spread、ResultRetcode、ResultComment、Journalログを確認してください。hedging口座とnetting口座の違いも確認対象です。
CPositionInfoとCOrderInfoは何が違いますか?
CPositionInfoは保有中ポジションを確認するためのクラスです。COrderInfoは注文情報、特に未約定注文や注文履歴を確認するためのクラスです。PositionとOrderは別の概念として扱います。
CDealInfoは何に使いますか?
約定履歴の確認に使います。決済損益、EA別履歴、Magic別集計、日次損益確認などで使います。DEAL_TYPEだけでなくDEAL_ENTRYも確認してください。
CSymbolInfoでは何を確認しますか?
Bid、Ask、Point、Digits、最小ロット、ロット刻み、StopsLevel、Spreadなどを確認します。発注前のvalidationやINVALID_VOLUME、INVALID_STOPSの原因確認に重要です。
CAccountInfoでは何を確認しますか?
Balance、Equity、Margin、FreeMargin、MarginLevel、Currencyなどを確認します。残高と有効証拠金、口座全体損益とEA別損益を混同しないようにしてください。
CheckResultは実発注結果ですか?
CheckResultは発注前確認の結果です。証拠金や注文条件の事前確認には使えますが、実際のOrderSendやCTrade実行結果とは別に扱います。
標準ライブラリと直接OrderSend実装はどちらがよいですか?
一般的なEAではCTradeが扱いやすい場合が多いです。特殊な発注制御、詳細なrequestログ、独自retry、細かいfilling制御が必要な場合は、OrderSend直接実装も検討します。
開発依頼前に何を整理すればよいですか?
EA名、バージョン、対象機能、銘柄、時間足、注文条件、ResultRetcode、Expertsログ、Journalログ、setファイル、スクリーンショット、再現手順を整理してください。
まとめ
MQL5標準ライブラリでは、CTrade、CPositionInfo、COrderInfo、CDealInfo、CSymbolInfo、CAccountInfoを目的別に使い分けることが重要です。
CTradeは発注や決済を簡潔に扱える便利なクラスですが、Buy、Sell、PositionCloseの戻り値だけで成功判定を完結しないようにしてください。ResultRetcode、ResultComment、ResultOrder、ResultDeal、Position状態、History履歴を確認します。
CPositionInfo、COrderInfo、CDealInfoは、それぞれPosition、Order、Dealを確認するためのクラスです。ticket、type、state、entry、magic、commentなどを混同しないようにしてください。
CSymbolInfoとCAccountInfoは、発注前validationやrisk確認に重要です。point、digits、lot step、StopsLevel、spread、Balance、Equity、FreeMargin、MarginLevelを整理して確認してください。
不具合調査や開発依頼を行う場合は、EA名、バージョン、対象機能、銘柄、時間足、注文条件、ResultRetcode、Expertsログ、Journalログ、setファイル、スクリーンショット、再現手順を整理してください。

