MQL5標準ライブラリ・CTrade完全ガイド|注文・決済・ポジション確認の実務基礎
MQL5でEAの注文処理、決済処理、ポジション確認を実装する場合、OrderSendやMqlTradeRequestを直接扱う方法のほかに、MQL5標準ライブラリのCTrade、CPositionInfo、COrderInfo、CDealInfoなどを使う方法があります。
標準ライブラリを使うと、注文処理やポジション確認を整理しやすくなる場合があります。ただし、CTradeを使えば注文エラーがなくなるわけではありません。注文結果、retcode、対象symbol、volume、price、SL/TP、Magic Number、口座方式、銘柄仕様、Journalログ、Expertsログを確認する必要があります。
この記事では、MQL5標準ライブラリ、CTrade、Buy / Sell、PositionClose、CPositionInfo、COrderInfo、CDealInfo、OrderSend直接実装との違い、注文失敗時の確認、ログ設計、開発依頼前に整理する情報を実務向けに整理します。
このページは、MT5 / MQL5の技術学習記事です。投資判断、売買タイミング、利益や結果の保証、推奨ロット、推奨銘柄、特定ブローカー誘導を目的とした内容ではありません。
この記事の目的
この記事の目的は、MQL5標準ライブラリとCTradeを使う時に、どの役割をどのクラスで扱い、注文結果やポジション状態をどのように確認するかを整理することです。
CTradeは便利な注文処理用クラスですが、EAのsignal、execution、risk、exit、log、notificationの責務を自動で整理してくれるものではありません。注文処理を分かりやすく書ける一方で、結果確認やログ設計は開発側で明確にする必要があります。
| この記事で扱うこと | 目的 |
|---|---|
| MQL5標準ライブラリの概要 | どのような補助クラスがあるか整理する |
| CTradeの役割 | 注文・決済・変更処理の実装方法を理解する |
| OrderSend直接実装との違い | どちらを使う場合でも確認すべき項目を整理する |
| Buy / Sell / PositionClose | CTrade利用時の代表的な処理を確認する |
| retcode確認 | 注文結果をログで追えるようにする |
| Info系クラス | Position、Order、Deal情報の確認方法を整理する |
| 注文失敗時の確認 | 原因切り分けに必要な情報を整理する |
EA全体の責務分離については、MQL5 EA設計パターン完全ガイドもあわせて確認してください。
MQL5標準ライブラリとは
MQL5標準ライブラリは、MQL5でよく使う処理を扱いやすくするためのクラス群です。取引処理、ポジション確認、注文確認、約定履歴確認、配列、文字列、ファイル、グラフィックなど、複数の分野で利用できます。
EA開発では、特にTrade関連の標準ライブラリを使う場面があります。CTrade、CPositionInfo、COrderInfo、CDealInfoなどは、注文処理や取引情報の確認で使われる代表的なクラスです。
| クラス | 主な役割 | 確認すること |
|---|---|---|
| CTrade | 注文、決済、変更などの取引処理 | Buy、Sell、PositionClose、retcode確認 |
| CPositionInfo | 保有ポジション情報の確認 | symbol、magic、volume、price、profitなど |
| COrderInfo | 注文情報の確認 | 未約定注文、注文種別、価格、状態など |
| CDealInfo | 約定情報の確認 | deal、volume、price、profit、entry種別など |
| その他標準クラス | 配列、文字列、ファイル、UI補助など | 用途に応じて確認する |
標準ライブラリは、実装を整理するための選択肢です。使うだけでEAが安全になる、注文失敗がなくなる、結果が良くなるというものではありません。
CTradeとは
CTradeは、MQL5標準ライブラリに含まれる取引処理用のクラスです。
Buy、Sell、PositionClose、OrderDelete、PositionModifyなど、注文・決済・変更に関係する処理を、比較的分かりやすい形で呼び出せます。
ただし、CTradeはexecution層の実装を補助するものです。signal条件、risk判定、exit条件、注文前チェック、ログ設計、通知処理は、EA側で責務を分けて設計する必要があります。
| CTradeで扱う処理 | 内容 | 確認ポイント |
|---|---|---|
| Buy | 買い方向の注文リクエスト | volume、symbol、price、SL/TP、comment |
| Sell | 売り方向の注文リクエスト | volume、symbol、price、SL/TP、comment |
| PositionClose | 保有ポジションの決済 | 対象symbol、ticket、口座方式 |
| PositionModify | SL/TPなどの変更 | stops level、digits、価格妥当性 |
| OrderDelete | 未約定注文の削除 | 対象order、状態、retcode |
| ResultRetcode | 直近の取引結果確認 | retcodeをログへ残す |
CTradeを使う場合でも、注文前にロット、銘柄仕様、取引可否、ポジション数、Magic Number、スプレッド、SL/TP距離を確認する設計が必要です。
OrderSend直接実装との違い
MQL5の注文処理では、MqlTradeRequestとOrderSendを直接扱う方法と、CTradeを使う方法があります。
OrderSend直接実装では、requestとresultを明示的に組み立てます。CTradeでは、よく使う取引処理をメソッドとして呼び出せます。どちらを使う場合でも、注文結果の確認とログ設計は必要です。
| 比較項目 | OrderSend直接実装 | CTrade |
|---|---|---|
| 記述量 | requestを細かく組み立てるため多くなりやすい | 代表処理は短く書きやすい |
| 制御の細かさ | 細部を明示しやすい | メソッドの扱いを理解する必要がある |
| 学習しやすさ | 取引構造を理解しやすい | 実務コードを整理しやすい |
| ログ設計 | request/resultを明示的に残しやすい | ResultRetcodeなどを意識して残す必要がある |
| 改修時の見通し | 自由度は高いが冗長になりやすい | 標準的な処理は読みやすくなる場合がある |
| 注意点 | request設定漏れに注意 | 成功判定とretcode確認を省略しない |
どちらが常に正しいというものではありません。EAの規模、開発方針、注文処理の複雑さ、ログ設計、既存コードとの整合に合わせて選びます。
MQL5の関数や標準的な役割を整理したい場合は、MQL5関数辞書も参考になります。
CTradeでBUY / SELLを行う基本
CTradeでは、BuyやSellメソッドを使って注文リクエストを出せます。
ただし、これは注文処理の呼び出し方法を示すものであり、売買判断や運用設定を示すものではありません。実際のEAでは、signal、risk、executionを分けて、注文前の確認を行ってから呼び出します。
#include <Trade/Trade.mqh>
CTrade trade;
bool SendBuyForCheck(const string symbol, const double volume)
{
ResetLastError();
bool ok = trade.Buy(volume, symbol);
PrintFormat("DIAG/EXEC buy_result symbol=%s volume=%.2f ok=%s retcode=%d last_error=%d",
symbol,
volume,
ok ? "Y" : "N",
trade.ResultRetcode(),
GetLastError());
return ok;
}上記は、CTrade呼び出しと結果ログの形を示す最小例です。特定のロット、銘柄、エントリー条件を推奨するものではありません。
実務では、BuyやSellを呼び出す前に、volumeの正規化、symbolの取引可否、スプレッド、ポジション数、Magic Number、SL/TPの距離、EAの稼働許可状態を確認します。
| 注文前確認 | 確認する内容 | ログに残す例 |
|---|---|---|
| symbol | 対象銘柄が正しいか | symbol=… |
| volume | 最小ロット・最大ロット・volume stepに合うか | requested_lot、normalized_lot |
| trade allowed | 取引可能な状態か | trade_mode、terminal trade allowed |
| spread | 許容条件に合うか | spread=… |
| positions | 既存ポジション数やMagic別状態 | position_count、magic_count |
| risk result | 新規許可・停止理由 | risk_allowed、block_reason |
PositionCloseの基本
CTradeでは、PositionCloseを使って保有ポジションの決済処理を呼び出せます。
ただし、どのポジションを決済するのか、symbol指定なのかticket指定なのか、Hedging口座なのかNetting口座なのか、Magic Numberで絞るのかを確認する必要があります。
#include <Trade/Trade.mqh>
CTrade trade;
bool ClosePositionForCheck(const string symbol)
{
ResetLastError();
bool ok = trade.PositionClose(symbol);
PrintFormat("DIAG/EXEC close_result symbol=%s ok=%s retcode=%d last_error=%d",
symbol,
ok ? "Y" : "N",
trade.ResultRetcode(),
GetLastError());
return ok;
}この例は、PositionCloseとログ確認の形を示すものです。実際のEAでは、決済対象の選定、Magic Number、方向、ticket、口座方式、exit理由を明確にしたうえで実装してください。
| 決済前確認 | 確認する内容 | 注意点 |
|---|---|---|
| 対象symbol | どの銘柄を決済するか | チャート銘柄と対象銘柄を混同しない |
| ticket | 特定ポジションを決済するか | 複数ポジションEAでは重要 |
| Magic Number | どのロジックのポジションか | 他ロジックと混同しない |
| 方向 | BUY / SELL | 方向別exit条件を確認する |
| exit理由 | 利確、損切り、時間、手動、外部停止など | ログへ残す |
| retcode | 決済リクエスト結果 | 成功・失敗を確認する |
決済処理はexit層の責務です。エントリー条件であるsignal層とは分けてログを残すと、不具合調査がしやすくなります。
注文結果とretcodeの確認
CTradeを使う場合でも、注文結果とretcodeの確認は必要です。
BuyやSellがfalseを返した場合だけでなく、trueを返した場合でも、取引サーバー側の応答、order、deal、comment、retcodeを確認できるようにしておくと、後からログを追いやすくなります。
| 確認項目 | 内容 | ログ例 |
|---|---|---|
| メソッド戻り値 | CTrade呼び出しの成否 | ok=Y / N |
| ResultRetcode | 取引結果コード | retcode=… |
| ResultOrder | 注文番号 | order=… |
| ResultDeal | 約定番号 | deal=… |
| ResultComment | サーバーコメント | comment=… |
| GetLastError | 直近のエラー候補 | last_error=… |
| request概要 | symbol、volume、direction、sl、tp | 機密情報を含めない形で記録 |
注文処理のログは、単に「注文失敗」と出すだけでは不足します。どのsymbol、どのvolume、どのdirection、どのretcodeだったのかを確認できるようにしてください。
retcodeやエラー確認は、MQL5エラーコード辞典も参考になります。
CPositionInfoの役割
CPositionInfoは、保有中のポジション情報を確認するために使われる標準ライブラリのクラスです。
EAで保有状態を確認する場合、symbol、ticket、magic、volume、price、profit、typeなどを確認します。複数ロジックEAや複数ポジションEAでは、どのポジションを対象にしているのかを明確にする必要があります。
| 確認項目 | 意味 | 使う場面 |
|---|---|---|
| Symbol | 対象銘柄 | チャート銘柄との一致確認 |
| Ticket | ポジション識別 | 特定ポジションの決済・変更 |
| Magic | EAやロジック識別 | 複数ロジックEAの管理 |
| Volume | 保有量 | ロット集計、部分決済確認 |
| PriceOpen | 建値 | 損益や距離の確認 |
| Profit | 現在損益 | risk、exit、表示 |
| PositionType | BUY / SELLなど | 方向別処理 |
CPositionInfoを使う場合でも、対象ポジションの選定条件を明確にしてください。symbolだけで見るのか、Magic Numberで絞るのか、ticket単位で扱うのかによって、EAの挙動が変わります。
COrderInfoの役割
COrderInfoは、注文情報を確認するために使われる標準ライブラリのクラスです。
ここでいう注文は、保有ポジションや約定履歴とは分けて考える必要があります。未約定注文、注文種別、価格、状態、期限などを確認する場面があります。
| 確認項目 | 意味 | 使う場面 |
|---|---|---|
| Ticket | 注文番号 | 注文の特定、削除、変更 |
| Symbol | 対象銘柄 | 注文対象の確認 |
| Type | 注文種別 | 指値、逆指値などの確認 |
| Volume | 注文量 | ロット確認 |
| PriceOpen | 注文価格 | 価格条件の確認 |
| State | 注文状態 | 未約定、取消、約定などの確認 |
| Magic | EAやロジック識別 | ロジック別注文管理 |
未約定注文を使うEAでは、COrderInfoで注文状態を確認し、不要な注文を残していないか、対象ロジック以外の注文を操作していないかを確認します。
CDealInfoの役割
CDealInfoは、約定情報を確認するために使われる標準ライブラリのクラスです。
MQL5では、Order、Deal、Positionを分けて考える必要があります。注文が出され、約定が発生し、ポジション状態が変わるため、履歴確認ではDeal情報が重要になる場合があります。
| 確認項目 | 意味 | 使う場面 |
|---|---|---|
| Ticket | 約定番号 | 履歴の特定 |
| Order | 関連する注文番号 | 注文と約定の対応確認 |
| Symbol | 対象銘柄 | 履歴対象の確認 |
| Volume | 約定量 | 部分約定や分割確認 |
| Price | 約定価格 | 約定位置の確認 |
| Profit | 損益 | 履歴集計 |
| Entry | IN / OUTなどの種別 | 新規・決済の判定 |
履歴集計や再エントリー条件を扱うEAでは、Deal情報の確認が必要になる場合があります。注文履歴だけでなく、約定履歴をどう見るかも仕様として整理してください。
Info系クラスの比較
CPositionInfo、COrderInfo、CDealInfoは名前が似ていますが、確認する対象が異なります。
保有中の状態を見たいのか、未約定注文を見たいのか、過去の約定履歴を見たいのかを分ける必要があります。
| クラス | 対象 | 確認する主な場面 | 混同しやすい点 |
|---|---|---|---|
| CPositionInfo | 現在の保有ポジション | 保有数、建値、損益、決済対象確認 | 履歴ではなく現在状態を見る |
| COrderInfo | 注文情報 | 未約定注文、注文状態、注文価格 | 約定済みのDealとは別 |
| CDealInfo | 約定履歴 | 約定価格、損益、IN / OUT、履歴集計 | 現在保有中のPositionとは別 |
MQL5の取引構造では、Order、Deal、Positionを分けて確認することが重要です。CTradeで注文を出す場合でも、確認する対象を明確にしてください。
標準ライブラリを使う時のログ設計
標準ライブラリを使う場合でも、ログ設計は重要です。
注文処理、ポジション確認、注文確認、履歴確認で、どのクラスを使い、何を確認し、どの結果になったのかをログへ残すと、不具合調査が進めやすくなります。
| ログ分類 | 記録する内容 | 例 |
|---|---|---|
| EXEC_REQUEST | 注文前の概要 | symbol、direction、volume、magic |
| EXEC_RESULT | CTrade実行結果 | ok、retcode、order、deal、comment |
| POSITION_SCAN | 保有確認 | position_count、symbol、magic、ticket |
| ORDER_SCAN | 注文確認 | order_count、type、state |
| DEAL_SCAN | 約定履歴確認 | deal_count、entry、profit |
| ERROR | 失敗理由 | last_error、retcode、reason |
ログは多ければよいわけではありません。通常運用、検証、バックテストでログ量を切り替え、同じ内容を連続出力しすぎないように設計してください。
ログ設計と不具合調査は、MQL5デバッグ・ログファースト開発完全ガイドも参考になります。
注文失敗時に確認すること
CTradeを使っても、注文失敗は起こり得ます。
原因は、ロット不正、取引不可、証拠金不足、価格不正、SL/TP距離、stops level、スプレッド、マーケット休止、EA側のrisk停止、外部制御、Magic Number管理ミスなど、複数あります。
| 確認項目 | 確認する内容 | 見るログ |
|---|---|---|
| retcode | 取引サーバー側の応答 | EXEC_RESULT |
| GetLastError | 直近エラー候補 | ERROR |
| volume | 最小・最大・stepに合うか | RISK、EXEC_REQUEST |
| symbol trade mode | 取引可能な状態か | INIT、SYMBOL_INFO |
| SL / TP | stops levelや価格妥当性 | EXEC_REQUEST |
| margin | 証拠金条件 | RISK |
| position count | 最大数や重複制御 | POSITION_SCAN |
| external stop | 外部停止や認証状態 | AUTH、EXTERNAL |
注文失敗時は、CTradeの戻り値だけで判断せず、retcode、GetLastError、request概要、Journalログ、Expertsログを合わせて確認してください。
初心者が混同しやすい点
CTradeや標準ライブラリを使い始めた時に、初心者が混同しやすい点があります。
特に、注文成功と約定、現在ポジションと履歴、CTradeの戻り値とretcode、symbol単位とticket単位、HedgingとNettingの違いは注意が必要です。
| 混同しやすい点 | 実際の確認 | 注意点 |
|---|---|---|
| CTradeを使えばエラーがなくなる | エラーは起こり得る | retcodeとJournalログを確認する |
| Buyが呼べれば必ず約定する | サーバー応答や条件で失敗する場合がある | ResultRetcodeを確認する |
| PositionとDealは同じ | 現在保有と約定履歴は別 | Info系クラスを使い分ける |
| symbolで閉じれば常に対象だけ閉じる | 口座方式や保有状態で確認が必要 | ticket、magic、directionも確認する |
| OrderSend直接実装より常に安全 | 安全性は設計と確認次第 | ログと責務分離が重要 |
| 標準ライブラリならログ不要 | むしろ結果確認ログが必要 | EXEC_REQUEST / EXEC_RESULTを残す |
標準ライブラリは実装補助です。EA全体の設計、エラー処理、ログ設計、状態管理は別途整理してください。
既存EAがOrderSend直接実装の場合
既存EAがOrderSend直接実装で作られている場合でも、必ずCTradeへ置き換える必要はありません。
既存コードが安定しており、request / result / retcode / errorログが明確に整理されている場合は、その構造を維持した方がよいこともあります。一方で、注文処理が散らばっていて改修しにくい場合は、CTradeや実行クラスへの整理を検討することがあります。
| 状態 | 判断の方向 | 確認すること |
|---|---|---|
| OrderSend実装が整理されている | 無理に置き換えない選択もある | ログ、retcode、request構造 |
| 注文処理が複数箇所に散在 | 実行層の整理を検討 | 関数分割、CTrade、クラス化 |
| 注文エラー原因が追えない | ログ設計を優先 | EXEC_REQUEST / EXEC_RESULT |
| 複数ロジックで注文管理が混在 | Magic別・logic別に整理 | ロジック別execution管理 |
| 保守担当者が変わる | 標準的な構造へ整理を検討 | コメント、命名、include分割 |
既存EAの構造整理は、MQL5クラス・構造体・配列設計完全ガイドも参考になります。
CTradeと複数ポジション管理
複数ポジションを扱うEAでは、CTradeで注文や決済を呼び出すだけでなく、どのポジションを対象にするかを明確にする必要があります。
特に、複数ロジックEA、ナンピンEA、分割決済、Magic Number別管理、コピーEA連携、Hedging口座では、symbolだけでなく、ticket、magic、direction、logic_idを確認する設計が重要です。
| 管理項目 | 確認する内容 | 注意点 |
|---|---|---|
| symbol | 対象銘柄 | 複数銘柄EAでは必須 |
| magic | EA・ロジック識別 | 他EAや他ロジックと混同しない |
| ticket | 特定ポジション識別 | 個別決済や変更で重要 |
| direction | BUY / SELL | 方向別exit条件に必要 |
| logic_id | 内部ロジック番号 | Magicと対応表を持つ |
| snapshot | 現在保有状態の整理 | riskやexitへ渡す前に整理する |
複数ポジション管理では、CTradeだけでなく、position snapshot、Magic Number管理、ログタグ、ロジック別stateが重要になります。
開発依頼前に確認すること
CTradeを使った注文処理の実装、既存EAのCTrade化、OrderSend直接実装の整理、注文エラー調査を相談する場合は、必要な情報を事前に整理してください。
注文処理の相談では、ソースコードだけでなく、setファイル、Expertsログ、Journalログ、発生時刻、対象symbol、時間足、口座方式、Magic Number、注文失敗時のretcodeが重要です。
| 整理する情報 | 内容 | 注意点 |
|---|---|---|
| EA名・バージョン | 対象特定 | 旧版と混在しないようにする |
| 注文処理の方式 | CTradeかOrderSend直接実装か | 混在している場合は明記する |
| 対象symbol | 銘柄名 | サフィックス込みで記録する |
| setファイル | input設定 | 認証情報やURLがないか確認する |
| Expertsログ | EA内部の実行ログ | EXEC_REQUEST / EXEC_RESULTを含める |
| Journalログ | 端末側・サーバー側情報 | 注文失敗時は重要 |
| retcode | 取引結果コード | 注文失敗時は必ず確認する |
| 口座方式 | Hedging / Netting | 複数ポジション管理に関係する |
| 再現条件 | 発生時刻、操作、条件 | 同じ状況を作れるようにする |
開発依頼前の資料整理は、MT5開発依頼前に用意する資料まとめも確認してください。
送ってはいけない情報
注文処理や既存EA改修を相談する場合でも、機密情報はそのまま送らないでください。
- 口座番号の全桁
- 投資家パスワード
- マスターパスワード
- Webhook URLの実値
- GAS URLの実値
- APIキー
- 認証トークン
- 外部サービスの秘密情報
- 個人情報
- 第三者の個人情報が入ったログ
setファイル、ログ、スクリーンショット、ソースコードを送る前に、認証情報や外部連携URLが含まれていないか確認してください。
MQL5標準ライブラリ・CTrade確認チェック表
- □ CTradeを使う目的を整理した
- □ OrderSend直接実装との違いを確認した
- □ Buy / Sell前にsymbol、volume、trade modeを確認した
- □ PositionClose前に対象symbol、ticket、magicを確認した
- □ CTradeの戻り値だけでなくretcodeを確認した
- □ ResultOrder、ResultDeal、ResultCommentをログに残せるようにした
- □ CPositionInfoで保有状態を確認した
- □ COrderInfoで注文状態を確認した
- □ CDealInfoで約定履歴を確認した
- □ 複数ロジックEAではMagic Numberとlogic_idを分けた
- □ ExpertsログとJournalログを保存した
- □ 口座番号や認証情報をマスクした
次に読む技術講座
この講座とあわせて確認すると、MT5・MQL5開発、検証、不具合調査の流れを整理しやすくなります。
| No | 講座 | 確認できること |
|---|---|---|
| LEARN-007 | MQL5注文・ポジション・履歴管理完全ガイド | 注文・ポジション・履歴管理を確認する |
| LEARN-017 | MQL5ロット・証拠金・銘柄仕様完全ガイド | ロット・証拠金・銘柄仕様を確認する |
| LEARN-020 | MQL5イベント処理完全ガイド | 取引イベントとOnTradeTransactionを確認する |
| LEARN-012 | MQL5 EA設計パターン完全ガイド | executionとriskの責務分離を確認する |
次に確認するページ
技術講座を確認した後、導入・商品確認・開発相談・不具合報告へ進む場合は、以下のページも確認してください。
| ページ | 確認できること |
|---|---|
| 技術講座一覧 | MT5・MQL5・EA開発に関する技術講座を順番に確認できます。 |
| 導入ガイド | EA、インジケーター、補助ツールを導入する前の確認事項を整理できます。 |
| 商品一覧 | EAファンクラブで扱う補助ツール、インジケーター、コピーEAなどを確認できます。 |
| 開発代行ページ | EA、インジケーター、補助ツールの新規作成・改修相談を確認できます。 |
| 不具合報告・サポート依頼 | ログ、スクリーンショット、再現手順を整理して相談する場合に確認できます。 |
よくある質問
CTradeを使えば注文エラーはなくなりますか?
なくなりません。CTradeは注文処理を扱いやすくする標準ライブラリのクラスですが、ロット不正、取引不可、価格不正、証拠金、stops level、スプレッド、サーバー応答などによる注文失敗は起こり得ます。
OrderSendとCTradeはどちらを使うべきですか?
EAの設計方針によります。OrderSend直接実装はrequestとresultを細かく扱いやすく、CTradeは代表的な注文処理を整理しやすい場合があります。どちらを使う場合でも、retcode確認とログ設計は必要です。
CTradeでもretcode確認は必要ですか?
必要です。CTradeの戻り値だけではなく、ResultRetcode、ResultOrder、ResultDeal、ResultComment、GetLastErrorを確認すると、注文失敗や決済失敗の原因を追いやすくなります。
ポジション確認には何を使いますか?
標準ライブラリではCPositionInfoを使って保有ポジション情報を確認できます。symbol、ticket、magic、volume、price、profit、directionなどを確認し、EAの対象ポジションを明確にしてください。
標準ライブラリは初心者向けですか?
標準ライブラリは便利ですが、内部で何をしているかを理解せずに使うと、注文失敗時の原因が追いにくくなる場合があります。初心者でも使えますが、retcode、ログ、Position / Order / Dealの違いは確認してください。
既存EAがOrderSend直接実装でも問題ありませんか?
問題ない場合もあります。既存のOrderSend実装が整理され、request、result、retcode、ログが明確であれば、無理にCTradeへ置き換える必要はありません。改修目的に応じて判断します。
CTradeで複数ポジション管理できますか?
注文や決済処理の呼び出しには使えますが、複数ポジションをどう識別するかは別途設計が必要です。symbol、ticket、magic、direction、logic_id、position snapshotを整理してください。
CTradeを使ったEA改修で確認することは何ですか?
注文処理の方式、対象symbol、volume正規化、SL/TP距離、Magic Number、口座方式、retcodeログ、Expertsログ、Journalログ、既存OrderSend処理との混在有無を確認してください。
CPositionInfoとCDealInfoは何が違いますか?
CPositionInfoは現在保有しているポジション情報を確認するために使います。CDealInfoは約定履歴を確認するために使います。現在状態と履歴を混同しないようにしてください。
注文失敗時はどのログを送ればよいですか?
Expertsログ、Journalログ、setファイル、EA名、バージョン、対象symbol、時間足、発生時刻、retcode、スクリーンショットを整理してください。口座番号や認証情報はマスクしてください。
まとめ
MQL5標準ライブラリとCTradeは、EAの注文処理、決済処理、ポジション確認を整理するための有力な選択肢です。
ただし、CTradeを使えば注文エラーがなくなるわけではありません。Buy、Sell、PositionCloseを呼び出す前に、symbol、volume、Magic Number、口座方式、銘柄仕様、risk状態、SL/TP距離を確認し、実行後はretcode、order、deal、comment、GetLastErrorをログへ残すことが重要です。
CPositionInfo、COrderInfo、CDealInfoは、それぞれ現在ポジション、注文情報、約定履歴を確認するために使います。Position、Order、Dealを混同せず、EAの目的に合わせて使い分けてください。
学習内容を確認しても整理が難しい場合は、EA名、バージョン、setファイル、Expertsログ、Journalログ、発生時刻、スクリーンショットを整理したうえで相談してください。

