MQL5列挙型・定数辞典|ENUM_ORDER_TYPE・ENUM_TIMEFRAMES・ORDER_FILLINGの基本
MQL5でEAやインジケーターを開発する場合、列挙型や定数を正しく理解していないと、注文種別、時間足、ポジション種別、約定種別、銘柄仕様、口座情報、取引リクエストの指定を誤りやすくなります。
特に、ENUM_TIMEFRAMES、ENUM_ORDER_TYPE、ENUM_POSITION_TYPE、ENUM_DEAL_TYPE、ENUM_ORDER_STATE、ENUM_SYMBOL_INFO_DOUBLE、ENUM_SYMBOL_INFO_INTEGER、ENUM_ACCOUNT_INFO_DOUBLE、ENUM_TRADE_REQUEST_ACTIONS、ORDER_FILLING_FOK / IOC / RETURN は、EA開発や不具合調査で頻繁に確認する項目です。
この記事では、MQL5の列挙型・定数を、EA開発や不具合調査で確認しやすい辞典形式で整理します。公式リファレンスの代わりに丸暗記するためではなく、どの定数を、どの場面で使い、どの関数・ログ・エラーと照合するかを整理するための記事です。
注意:この記事はMQL5開発・EA動作確認・インジケーター連携・不具合調査のための技術解説です。特定の売買判断、推奨エントリー、推奨ロット、推奨銘柄、利益保証、勝率保証、損失回避保証を行うものではありません。実運用前には、必ずデモ環境や検証環境で動作を確認してください。
- MQL5の列挙型・定数の全体像
- ENUM_TIMEFRAMES
- ENUM_ORDER_TYPE
- ENUM_POSITION_TYPE
- ENUM_DEAL_TYPE
- ENUM_ORDER_STATE
- ENUM_SYMBOL_INFO_DOUBLE
- ENUM_SYMBOL_INFO_INTEGER
- ENUM_ACCOUNT_INFO_DOUBLE
- ENUM_TRADE_REQUEST_ACTIONS
- ORDER_FILLING_FOK / IOC / RETURN
- 定数を使う時の注意
- EA利用者向けの確認ポイント
- MQL5開発者向けの実装確認ポイント
- 列挙型・定数の辞典表
- 開発依頼前に整理する情報
- 関連するMQL5技術辞典
- 関連する技術講座
- FAQ
- まとめ
MQL5の列挙型・定数の全体像
MQL5では、時間足、注文種別、ポジション種別、約定種別、注文状態、銘柄情報、口座情報、取引リクエスト種別などを、列挙型や定数で指定します。
列挙型や定数は、単なる文字列ではありません。関数へ渡す値、構造体へ設定する値、ログで確認する値、履歴から読み取る値として使われます。意味を取り違えると、注文が通らない、ポジションを正しく選択できない、履歴集計がズレる、SymbolInfo系の値を誤読する、といった問題が起きます。
| 分類 | 主な用途 | 代表例 | 関連関数 |
|---|---|---|---|
| 時間足系 | チャート時間足、取得時間足、マルチタイムフレーム指定 | ENUM_TIMEFRAMES、PERIOD_M1、PERIOD_H1 | CopyRates、iClose、iTime、PeriodSeconds |
| 注文種別系 | BUY、SELL、指値、逆指値などの注文種別 | ENUM_ORDER_TYPE、ORDER_TYPE_BUY、ORDER_TYPE_SELL | OrderSend、OrderCheck、OrderGetInteger |
| ポジション種別系 | 保有中ポジションのBUY / SELL確認 | ENUM_POSITION_TYPE、POSITION_TYPE_BUY、POSITION_TYPE_SELL | PositionGetInteger、CPositionInfo |
| 約定種別系 | 履歴上の約定種別、新規・決済の確認 | ENUM_DEAL_TYPE、DEAL_TYPE_BUY、DEAL_TYPE_SELL | HistoryDealGetInteger、CDealInfo |
| 注文状態系 | 注文が有効、約定済み、取消済みかの確認 | ENUM_ORDER_STATE、ORDER_STATE_PLACED、ORDER_STATE_FILLED | OrderGetInteger、HistoryOrderGetInteger |
| 銘柄情報系 | point、tick value、最小ロット、spread、StopsLevel確認 | ENUM_SYMBOL_INFO_DOUBLE、ENUM_SYMBOL_INFO_INTEGER | SymbolInfoDouble、SymbolInfoInteger |
| 口座情報系 | 残高、有効証拠金、余剰証拠金、証拠金維持率確認 | ENUM_ACCOUNT_INFO_DOUBLE | AccountInfoDouble、CAccountInfo |
| 取引リクエスト系 | 成行、pending、SL/TP変更、注文削除のaction指定 | ENUM_TRADE_REQUEST_ACTIONS | MqlTradeRequest、OrderSend、OrderCheck |
| filling方式 | 約定方式の指定 | ORDER_FILLING_FOK、ORDER_FILLING_IOC、ORDER_FILLING_RETURN | OrderSend、CTrade、SymbolInfoInteger |
ENUM_TIMEFRAMES
ENUM_TIMEFRAMESは、MQL5で時間足を指定するための列挙型です。チャート時間足、価格取得、インジケーターハンドル作成、マルチタイムフレーム判定で使います。
| 定数/enum | 分類 | 意味 | 使う場面 | 関連関数 | 注意点 |
|---|---|---|---|---|---|
| PERIOD_CURRENT | 時間足 | 現在チャートの時間足 | チャート時間足に追従する処理 | CopyRates、iClose、iTime | チャート変更で対象時間足が変わります。 |
| PERIOD_M1 | 時間足 | 1分足 | 短期判定、スキャルピング、細かいログ確認 | CopyRates、iTime、PeriodSeconds | データ量が多く、BT負荷が高くなりやすいです。 |
| PERIOD_M5 | 時間足 | 5分足 | 短期〜中期のEA判定 | CopyRates、iClose、iMA | 現在足と確定足の区別が重要です。 |
| PERIOD_M15 | 時間足 | 15分足 | EA検証、サイン確認、MTF補助 | CopyRates、iTime、iCustom | チャート時間足と取得時間足の違いをログに残します。 |
| PERIOD_H1 | 時間足 | 1時間足 | 上位足フィルター、トレンド確認 | CopyRates、iClose、iTime | 下位足EAで使う場合はbar timeの照合が必要です。 |
| PERIOD_D1 | 時間足 | 日足 | 日次判定、長期フィルター、日足高安確認 | CopyRates、iHigh、iLow | サーバー日付とPC日付を混同しないようにします。 |
ENUM_TIMEFRAMESで確認すること
| 確認項目 | 内容 | 理由 |
|---|---|---|
| チャート時間足 | 現在チャートの時間足 | PERIOD_CURRENTを使う場合、チャート変更で対象が変わるため |
| 取得時間足 | CopyRatesやiCloseへ渡す時間足 | マルチタイムフレーム判定のズレを防ぐため |
| bar time | 取得したバーの時刻 | 時間足ごとのバー位置を照合するため |
| PeriodSeconds | 時間足を秒数へ変換した値 | バー間隔や時間制御を確認するため |
ENUM_ORDER_TYPE
ENUM_ORDER_TYPEは、注文種別を表す列挙型です。MqlTradeRequest.type、OrderGetInteger、HistoryOrderGetIntegerなどで使います。
| 定数/enum | 分類 | 意味 | 使う場面 | 関連関数 | 注意点 |
|---|---|---|---|---|---|
| ORDER_TYPE_BUY | 注文種別 | 買い成行注文 | BUYエントリー、BUY方向の発注 | OrderSend、CTrade.Buy | 発注価格はAsk基準で考えます。 |
| ORDER_TYPE_SELL | 注文種別 | 売り成行注文 | SELLエントリー、SELL方向の発注 | OrderSend、CTrade.Sell | 発注価格はBid基準で考えます。 |
| ORDER_TYPE_BUY_LIMIT | 注文種別 | 買い指値注文 | 現在価格より下で買いたい場合 | OrderSend、CTrade.BuyLimit | 価格方向が不正だと注文が拒否されます。 |
| ORDER_TYPE_SELL_LIMIT | 注文種別 | 売り指値注文 | 現在価格より上で売りたい場合 | OrderSend、CTrade.SellLimit | Ask/Bidと注文価格の位置を確認します。 |
| ORDER_TYPE_BUY_STOP | 注文種別 | 買い逆指値注文 | 現在価格より上で買いたい場合 | OrderSend、CTrade.BuyStop | ブレイク型注文で使われます。 |
| ORDER_TYPE_SELL_STOP | 注文種別 | 売り逆指値注文 | 現在価格より下で売りたい場合 | OrderSend、CTrade.SellStop | 価格方向とStopsLevelを確認します。 |
注文種別で確認すること
| 確認項目 | 内容 | 理由 |
|---|---|---|
| 成行かpendingか | BUY / SELLか、LIMIT / STOPか | request.actionやprice指定の意味が変わるため |
| 価格方向 | 現在Bid/Askに対して注文価格が正しい位置か | INVALID_PRICEやINVALID_STOPSを避けるため |
| StopsLevel | 注文価格やSL/TPが最小距離を満たすか | pending orderやSL/TP設定で重要です。 |
| OrderSend結果 | result.retcode、order、deal、comment | 注文受付と約定を分けて確認するため |
ENUM_POSITION_TYPE
ENUM_POSITION_TYPEは、現在保有中のポジション方向を表します。PositionGetIntegerでPOSITION_TYPEを取得すると、BUYポジションかSELLポジションかを確認できます。
| 定数/enum | 分類 | 意味 | 使う場面 | 関連関数 | 注意点 |
|---|---|---|---|---|---|
| POSITION_TYPE_BUY | ポジション種別 | 買いポジション | BUY保有確認、BUY決済対象、BUY側集計 | PositionGetInteger、CPositionInfo.Type | OrderのBUYとPositionのBUYを混同しないようにします。 |
| POSITION_TYPE_SELL | ポジション種別 | 売りポジション | SELL保有確認、SELL決済対象、SELL側集計 | PositionGetInteger、CPositionInfo.Type | 決済時のBid/Askや損益方向に注意します。 |
ENUM_DEAL_TYPE
ENUM_DEAL_TYPEは、履歴上の約定種別を表します。HistoryDealGetIntegerでDEAL_TYPEを取得し、BUY約定、SELL約定、残高操作、手数料などを区別します。
| 定数/enum | 分類 | 意味 | 使う場面 | 関連関数 | 注意点 |
|---|---|---|---|---|---|
| DEAL_TYPE_BUY | 約定種別 | 買い約定 | 新規BUY、SELL決済側の履歴確認など | HistoryDealGetInteger、CDealInfo | DEAL_ENTRYと組み合わせて新規か決済かを確認します。 |
| DEAL_TYPE_SELL | 約定種別 | 売り約定 | 新規SELL、BUY決済側の履歴確認など | HistoryDealGetInteger、CDealInfo | DEAL_TYPEだけで新規・決済を断定しないようにします。 |
| DEAL_TYPE_BALANCE | 約定種別 | 残高操作 | 入出金、残高調整の履歴確認 | HistoryDealGetInteger | EAの売買損益集計から除外する場合があります。 |
| DEAL_TYPE_CREDIT | 約定種別 | クレジット関連 | 口座履歴確認 | HistoryDealGetInteger | 通常の売買損益と分けて扱います。 |
DEAL_TYPEとDEAL_ENTRYは分けて確認する
Deal履歴を集計する時は、DEAL_TYPEだけで新規・決済を判断しないようにします。DEAL_ENTRYも合わせて確認することで、IN、OUT、INOUTなどの区別がしやすくなります。
| 確認対象 | 意味 | 主な用途 |
|---|---|---|
| DEAL_TYPE | BUY約定かSELL約定か、残高操作かなど | 約定種別の分類 |
| DEAL_ENTRY | 新規、決済、反転など | 損益集計、決済履歴確認 |
| DEAL_PROFIT | 約定損益 | 日次損益、EA別損益確認 |
| DEAL_MAGIC | Magic Number | EA別・ロジック別履歴確認 |
ENUM_ORDER_STATE
ENUM_ORDER_STATEは、注文状態を表す列挙型です。現在注文や履歴注文を確認する時に、注文が配置済み、約定済み、取消済み、拒否済みなどを確認できます。
| 定数/enum | 分類 | 意味 | 使う場面 | 関連関数 | 注意点 |
|---|---|---|---|---|---|
| ORDER_STATE_STARTED | 注文状態 | 注文処理開始 | 注文状態の監査 | OrderGetInteger、HistoryOrderGetInteger | 通常の最終判定では他状態と合わせて確認します。 |
| ORDER_STATE_PLACED | 注文状態 | 注文配置済み | pending orderの確認 | OrderGetInteger | 約定済みとは限りません。 |
| ORDER_STATE_FILLED | 注文状態 | 注文が約定済み | 履歴注文の確認 | HistoryOrderGetInteger | Deal履歴も合わせて確認します。 |
| ORDER_STATE_CANCELED | 注文状態 | 注文取消済み | pending取消、手動取消の確認 | HistoryOrderGetInteger | EAによる取消か手動取消かはログと照合します。 |
| ORDER_STATE_REJECTED | 注文状態 | 注文拒否 | 注文失敗の履歴確認 | HistoryOrderGetInteger | retcodeやJournalログも確認します。 |
| ORDER_STATE_EXPIRED | 注文状態 | 期限切れ | 期限付きpending orderの確認 | HistoryOrderGetInteger | expiration設定を確認します。 |
ENUM_SYMBOL_INFO_DOUBLE
ENUM_SYMBOL_INFO_DOUBLEは、SymbolInfoDoubleで取得するdouble系の銘柄情報を指定するための列挙型です。価格、point、tick value、ロット条件などの確認に使います。
| 定数/enum | 分類 | 意味 | 使う場面 | 関連関数 | 注意点 |
|---|---|---|---|---|---|
| SYMBOL_BID | 銘柄情報 double | Bid価格 | SELL価格、BUY決済、spread計算 | SymbolInfoDouble、SymbolInfoTick | 価格更新状態も確認します。 |
| SYMBOL_ASK | 銘柄情報 double | Ask価格 | BUY価格、SELL決済、spread計算 | SymbolInfoDouble、SymbolInfoTick | Bidとの距離をpoint換算します。 |
| SYMBOL_POINT | 銘柄情報 double | 最小価格単位 | point換算、spread、SL/TP距離 | SymbolInfoDouble | 銘柄により0.01、0.001などが異なります。 |
| SYMBOL_TRADE_TICK_VALUE | 銘柄情報 double | tick value | 損益計算、リスク計算、銘柄仕様確認 | SymbolInfoDouble | 口座通貨や銘柄仕様で意味が変わる場合があります。 |
| SYMBOL_VOLUME_MIN | 銘柄情報 double | 最小ロット | ロットvalidation | SymbolInfoDouble | 最小未満の注文は拒否されます。 |
| SYMBOL_VOLUME_STEP | 銘柄情報 double | ロット刻み | ロット丸め、NormalizeVolume処理 | SymbolInfoDouble | step不一致はINVALID_VOLUMEの原因になります。 |
| SYMBOL_VOLUME_MAX | 銘柄情報 double | 最大ロット | ロット上限確認 | SymbolInfoDouble | 口座や銘柄で上限が異なります。 |
ENUM_SYMBOL_INFO_INTEGER
ENUM_SYMBOL_INFO_INTEGERは、SymbolInfoIntegerで取得する整数系の銘柄情報を指定するための列挙型です。digits、spread、取引モード、StopsLevel、FreezeLevel、filling方式などを確認します。
| 定数/enum | 分類 | 意味 | 使う場面 | 関連関数 | 注意点 |
|---|---|---|---|---|---|
| SYMBOL_DIGITS | 銘柄情報 integer | 価格の小数桁 | 価格表示、NormalizeDouble、SL/TP計算 | SymbolInfoInteger | 固定桁数で決め打ちしないようにします。 |
| SYMBOL_SPREAD | 銘柄情報 integer | スプレッド | spread制限、ログ表示 | SymbolInfoInteger | point単位か価格差かを明確にします。 |
| SYMBOL_TRADE_MODE | 銘柄情報 integer | 銘柄の取引モード | 取引可能かの確認 | SymbolInfoInteger | 取引不可銘柄では注文できません。 |
| SYMBOL_TRADE_STOPS_LEVEL | 銘柄情報 integer | SL/TPやpending価格の最小距離 | SL/TP設定、pending order作成 | SymbolInfoInteger | INVALID_STOPS対策で重要です。 |
| SYMBOL_TRADE_FREEZE_LEVEL | 銘柄情報 integer | 注文変更やSL/TP変更の制限距離 | modify、SL/TP変更、pending変更 | SymbolInfoInteger | 価格が近すぎると変更できない場合があります。 |
| SYMBOL_FILLING_MODE | 銘柄情報 integer | 対応している約定方式 | ORDER_FILLING指定、CTrade設定 | SymbolInfoInteger | INVALID_FILLの原因調査で確認します。 |
ENUM_ACCOUNT_INFO_DOUBLE
ENUM_ACCOUNT_INFO_DOUBLEは、AccountInfoDoubleで取得するdouble系の口座情報を指定するための列挙型です。残高、有効証拠金、余剰証拠金、証拠金維持率などを確認します。
| 定数/enum | 分類 | 意味 | 使う場面 | 関連関数 | 注意点 |
|---|---|---|---|---|---|
| ACCOUNT_BALANCE | 口座情報 double | 口座残高 | ロット計算、日次確認、リスク計算 | AccountInfoDouble、CAccountInfo | 含み損益は反映されません。 |
| ACCOUNT_EQUITY | 口座情報 double | 有効証拠金 | 含み損益込みの口座状態確認 | AccountInfoDouble、CAccountInfo | 残高とは異なります。 |
| ACCOUNT_MARGIN | 口座情報 double | 使用中証拠金 | 保有中ポジションの証拠金確認 | AccountInfoDouble | 保有状態により変化します。 |
| ACCOUNT_MARGIN_FREE | 口座情報 double | 余剰証拠金 | 発注前の証拠金確認 | AccountInfoDouble、OrderCheck | NO_MONEY対策で確認します。 |
| ACCOUNT_MARGIN_LEVEL | 口座情報 double | 証拠金維持率 | リスク管理、停止判定、状態表示 | AccountInfoDouble | 口座状態により急変します。 |
| ACCOUNT_PROFIT | 口座情報 double | 現在の含み損益 | 全体損益確認、risk表示 | AccountInfoDouble | EA別損益ではないため、Magic別集計とは分けます。 |
ENUM_TRADE_REQUEST_ACTIONS
ENUM_TRADE_REQUEST_ACTIONSは、MqlTradeRequest.actionへ設定する取引操作種別です。新規成行、pending order、SL/TP変更、注文削除など、何を行うリクエストなのかを指定します。
| 定数/enum | 分類 | 意味 | 使う場面 | 関連関数 | 注意点 |
|---|---|---|---|---|---|
| TRADE_ACTION_DEAL | 取引リクエスト | 成行注文または成行決済 | BUY / SELLの成行発注、ポジション決済 | OrderSend、MqlTradeRequest | type、volume、price、deviationなども確認します。 |
| TRADE_ACTION_PENDING | 取引リクエスト | pending orderの作成 | 指値・逆指値注文 | OrderSend、MqlTradeRequest | price、type、expiration、StopsLevelを確認します。 |
| TRADE_ACTION_SLTP | 取引リクエスト | SL/TP変更 | 保有ポジションのSL/TP設定・変更 | OrderSend、CTrade.PositionModify | StopsLevel、FreezeLevel、position ticketを確認します。 |
| TRADE_ACTION_MODIFY | 取引リクエスト | 注文変更 | pending orderの価格や期限変更 | OrderSend、MqlTradeRequest | order ticketと変更後価格を確認します。 |
| TRADE_ACTION_REMOVE | 取引リクエスト | pending order削除 | 未約定注文の取消 | OrderSend、CTrade.OrderDelete | 保有中Positionの決済とは別です。 |
ORDER_FILLING_FOK / IOC / RETURN
ORDER_FILLING系は、注文の約定方式を指定する定数です。銘柄仕様と合っていないfilling方式を指定すると、TRADE_RETCODE_INVALID_FILLなどの原因になります。
| 定数/enum | 分類 | 意味 | 使う場面 | 関連関数 | 注意点 |
|---|---|---|---|---|---|
| ORDER_FILLING_FOK | 約定方式 | 全量約定できる場合のみ約定 | 一部約定を避けたい注文 | OrderSend、CTrade.SetTypeFilling | 銘柄が対応していない場合があります。 |
| ORDER_FILLING_IOC | 約定方式 | 即時約定できる分だけ約定し、残りはキャンセル | 部分約定を許容する設計 | OrderSend、CTrade.SetTypeFilling | EA側の約定数量確認が重要です。 |
| ORDER_FILLING_RETURN | 約定方式 | 未約定分を残す方式 | pendingや一部取引条件で使う場合 | OrderSend、CTrade.SetTypeFilling | 銘柄・注文種別により使えない場合があります。 |
| SYMBOL_FILLING_MODE | 銘柄仕様 | 銘柄側が対応するfilling方式 | 発注前の仕様確認 | SymbolInfoInteger | request.type_fillingと整合させます。 |
定数を使う時の注意
MQL5の列挙型・定数は、関数や構造体の文脈に合わせて使います。同じBUYやSELLに見える値でも、Order、Position、Dealでは意味や取得場所が異なります。
| 注意点 | 内容 | 確認すること |
|---|---|---|
| OrderとPositionを混同しない | ORDER_TYPE_BUYとPOSITION_TYPE_BUYは確認対象が違います。 | Order系かPosition系かをログに残します。 |
| DealのBUY/SELLだけで新規・決済を判断しない | DEAL_TYPEだけでは新規か決済か断定できません。 | DEAL_ENTRYも確認します。 |
| SymbolInfoDoubleとSymbolInfoIntegerを分ける | プロパティの型が違うと取得関数も変わります。 | double系かinteger系かを確認します。 |
| filling方式は銘柄仕様に合わせる | ORDER_FILLING指定が銘柄に合わないと注文失敗します。 | SYMBOL_FILLING_MODEを確認します。 |
| 時間足はbar timeとセットで確認する | MTFではshiftだけではズレる場合があります。 | ENUM_TIMEFRAMES、CopyTime、iTimeを確認します。 |
| retcodeとenumを混同しない | TRADE_RETCODEは取引結果コードです。 | result.retcode、GetLastError、Journalログを分けます。 |
EA利用者向けの確認ポイント
EAが注文しない、決済しない、サインと違う動きをする、ログにINVALID_FILLやINVALID_VOLUMEが出る場合は、列挙型や定数の指定、銘柄仕様、注文種別、時間足指定が関係していることがあります。
| 確認すること | 内容 | 開発者へ伝えるとよい情報 |
|---|---|---|
| EA名・バージョン | 設置しているEA名と版 | 対象ファイルと仕様を特定するため |
| 銘柄・時間足 | symbol、timeframe、ブローカー表記 | ENUM_TIMEFRAMESやSymbolInfo系の確認に必要です。 |
| 注文種別 | 成行、指値、逆指値、SL/TP変更、注文削除など | ENUM_ORDER_TYPEやTRADE_ACTIONの確認に必要です。 |
| エラー内容 | GetLastError、TRADE_RETCODE、表示メッセージ | 定数指定ミスか、サーバー側拒否かを分けるため |
| Expertsログ | request.action、request.type、type_filling、SymbolInfoログ | EA内部で使った値を確認するため |
| Journalログ | 端末側・サーバー側ログ | 注文拒否や取引条件を確認するため |
| setファイル | Inputs設定 | 時間足、注文方式、filling、risk設定の再現に必要です。 |
| スクリーンショット | チャート、設定、ログ、取引タブ、履歴タブ | 表示状態とログを照合するために役立ちます。 |
MQL5開発者向けの実装確認ポイント
MQL5開発では、enumや定数をその場の数値として扱わず、どの関数・構造体・履歴項目に対応する値なのかを明確にします。
| 責務 | 主な確認対象 | 実装上の注意 | 確認ログ |
|---|---|---|---|
| timeframe | ENUM_TIMEFRAMES、PERIOD_CURRENT、PERIOD_M15など | チャート時間足と取得時間足を分けます。 | TIMEFRAME_BASIS、BAR_TIME |
| order request | ENUM_ORDER_TYPE、ENUM_TRADE_REQUEST_ACTIONS | request.actionとrequest.typeを混同しないようにします。 | REQUEST_DUMP、ORDER_SEND |
| position scan | ENUM_POSITION_TYPE | BUY / SELL方向、ticket、magicを合わせて確認します。 | POSITION_SNAPSHOT、POSITION_SCOPE |
| history audit | ENUM_DEAL_TYPE、DEAL_ENTRY、ENUM_ORDER_STATE | DealとOrder履歴を分けます。 | HISTORY_AUDIT、DEAL_AUDIT |
| symbol spec | ENUM_SYMBOL_INFO_DOUBLE、ENUM_SYMBOL_INFO_INTEGER | double系とinteger系の取得関数を分けます。 | SYMBOL_SPEC、LOT_SPEC、STOPS_CHECK |
| account risk | ENUM_ACCOUNT_INFO_DOUBLE | balance、equity、margin_freeを分けて扱います。 | ACCOUNT_STATE、MARGIN_CHECK |
| filling | ORDER_FILLING_FOK / IOC / RETURN、SYMBOL_FILLING_MODE | 銘柄仕様とrequest.type_fillingを整合させます。 | FILLING_CHECK、ORDER_RESULT |
実装時の注意点
- enumや定数を数値だけでログに出さず、意味が分かる文言も併記する
- Order、Position、Deal、Historyで使う定数を混同しない
- request.actionとrequest.typeを分けて確認する
- DEAL_TYPEとDEAL_ENTRYをセットで確認する
- SymbolInfoDoubleとSymbolInfoIntegerをプロパティ型に合わせて使う
- ACCOUNT_BALANCEとACCOUNT_EQUITYを混同しない
- ORDER_FILLINGはSYMBOL_FILLING_MODEと照合する
- ENUM_TIMEFRAMESはCopyTimeやbar timeとセットで確認する
- 定数指定ミスと取引サーバー拒否をログで分ける
- 未対応銘柄仕様やブローカー差をSymbolInfo系ログで確認する
列挙型・定数の辞典表
| 定数/enum | 分類 | 意味 | 使う場面 | 関連関数 | 注意点 | 関連講座 |
|---|---|---|---|---|---|---|
| ENUM_TIMEFRAMES | 時間足 | 時間足を指定する列挙型 | 価格取得、MTF、インジハンドル作成 | CopyRates、iClose、iTime、PeriodSeconds | PERIOD_CURRENTはチャート時間足に依存します。 | 時系列データ・価格取得 |
| ENUM_ORDER_TYPE | 注文種別 | 注文の種類を表す列挙型 | 成行、指値、逆指値注文 | OrderSend、OrderCheck、OrderGetInteger | OrderとPositionを混同しないようにします。 | 注文・ポジション・履歴管理 |
| ENUM_POSITION_TYPE | ポジション種別 | 保有中ポジションのBUY / SELL | 保有確認、決済対象確認、方向別集計 | PositionGetInteger、CPositionInfo | 現在保有中のPositionに対する値です。 | 注文・ポジション・履歴管理 |
| ENUM_DEAL_TYPE | 約定種別 | 履歴上の約定種別 | Deal履歴確認、損益集計 | HistoryDealGetInteger、CDealInfo | DEAL_ENTRYと合わせて確認します。 | 注文・ポジション・履歴管理 |
| ENUM_ORDER_STATE | 注文状態 | 注文の状態を表す列挙型 | pending、約定済み、取消済み、拒否済み確認 | OrderGetInteger、HistoryOrderGetInteger | 現在注文と履歴注文を分けます。 | 注文・ポジション・履歴管理 |
| ENUM_SYMBOL_INFO_DOUBLE | 銘柄情報 | double系の銘柄情報プロパティ | Bid、Ask、point、tick value、ロット条件 | SymbolInfoDouble | integer系プロパティと混同しないようにします。 | 時系列データ・価格取得 |
| ENUM_SYMBOL_INFO_INTEGER | 銘柄情報 | integer系の銘柄情報プロパティ | digits、spread、StopsLevel、filling mode | SymbolInfoInteger | 銘柄仕様による差をログに残します。 | ロット・証拠金・銘柄仕様 |
| ENUM_ACCOUNT_INFO_DOUBLE | 口座情報 | double系の口座情報プロパティ | 残高、有効証拠金、余剰証拠金、証拠金維持率 | AccountInfoDouble、CAccountInfo | balanceとequityを混同しないようにします。 | ロット・証拠金・銘柄仕様 |
| ENUM_TRADE_REQUEST_ACTIONS | 取引リクエスト | 取引操作の種類 | 成行、pending、SL/TP変更、注文削除 | MqlTradeRequest、OrderSend | request.typeとは別項目です。 | 注文・ポジション・履歴管理 |
| ORDER_FILLING_FOK | 約定方式 | 全量約定できる場合のみ約定 | filling方式指定 | OrderSend、CTrade.SetTypeFilling | 銘柄仕様と一致するか確認します。 | 注文関数・取引構造体 |
| ORDER_FILLING_IOC | 約定方式 | 即時約定できる分だけ約定 | filling方式指定 | OrderSend、CTrade.SetTypeFilling | 部分約定時のvolume確認が必要です。 | 注文関数・取引構造体 |
| ORDER_FILLING_RETURN | 約定方式 | 未約定分を残す方式 | filling方式指定 | OrderSend、CTrade.SetTypeFilling | 注文種別や銘柄により使えない場合があります。 | 注文関数・取引構造体 |
開発依頼前に整理する情報
列挙型・定数、注文種別、時間足、銘柄仕様、口座情報まわりの不具合調査や改修依頼を行う場合は、次の情報を整理してください。
| 整理する情報 | 内容 | 理由 |
|---|---|---|
| 対象EA名・インジ名・バージョン | mq5/ex5名、商品名、バージョン | 対象ファイルと仕様を特定するため |
| 対象機能 | 注文、決済、履歴集計、MTF、銘柄仕様確認、ロット計算など | 関係するenumや定数を絞るため |
| 対象銘柄・時間足 | symbol、timeframe、ブローカー表記 | ENUM_TIMEFRAMES、SymbolInfo系確認に必要です。 |
| 注文種別 | 成行、指値、逆指値、SL/TP変更、注文削除など | ENUM_ORDER_TYPEやTRADE_ACTIONを確認するため |
| filling方式 | FOK、IOC、RETURN、銘柄側filling mode | INVALID_FILLの原因確認に必要です。 |
| エラー内容 | GetLastError、TRADE_RETCODE、表示メッセージ | 定数指定ミスかサーバー拒否かを分けるため |
| Expertsログ | request.action、request.type、type_filling、SymbolInfo、AccountInfo | EA内部で使った値を追うため |
| Journalログ | 端末側・サーバー側ログ | 注文拒否や取引条件を確認するため |
| setファイル | Inputs設定 | 時間足、注文方式、risk設定を再現するため |
| スクリーンショット | チャート、設定画面、ログ、取引タブ、履歴タブ | 表示状態とログを照合するため |
| 再現手順 | どの操作・条件で発生したか | OnInit、OnTick、OnTimer、OnTradeTransactionなどの発生箇所を特定するため |
送ってはいけない情報:口座パスワード、投資家パスワード、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標準ライブラリ辞典 | CTrade、CPositionInfo、COrderInfo、CDealInfo、CSymbolInfo、CAccountInfoなどを確認できます。 | MQL5標準ライブラリ辞典 |
確認ポイント:列挙型・定数では、Order、Position、Deal、History、SymbolInfo、AccountInfo、TradeRequestのどこで使う値なのかを分けて確認してください。似た名前でも、確認対象が異なる場合があります。
関連する技術講座
| 関連ページ | 確認できる内容 |
|---|---|
| 技術講座ハブ | MT5・MQL5・EA開発関連の技術講座一覧を確認できます。 |
| MQL5注文・ポジション・履歴管理完全ガイド | 注文種別、Position、Deal、History、Magic Numberの確認に使えます。 |
| MQL5時系列データ・価格取得完全ガイド | ENUM_TIMEFRAMES、CopyRates、iClose、iTime、現在足・確定足の確認に使えます。 |
| MQL5標準ライブラリ・CTrade完全ガイド | CTrade、CPositionInfo、COrderInfo、CDealInfoなどの確認に使えます。 |
| MQL5ロット・証拠金・銘柄仕様完全ガイド | SymbolInfo系、AccountInfo系、ロット条件、証拠金確認に使えます。 |
| MT5開発依頼前に用意する資料まとめ | 開発依頼前に整理するログ、setファイル、再現条件を確認できます。 |
FAQ
ENUM_TIMEFRAMESは何に使いますか?
価格取得、インジケーターハンドル作成、マルチタイムフレーム判定、時間足指定に使います。PERIOD_CURRENTを使う場合は、チャート時間足に依存する点に注意してください。
ENUM_ORDER_TYPEとENUM_POSITION_TYPEは何が違いますか?
ENUM_ORDER_TYPEは注文種別、ENUM_POSITION_TYPEは現在保有中ポジションの方向です。Order、Position、Deal、Historyは確認対象が異なるため、同じBUY / SELLでも文脈を分けて確認します。
DEAL_TYPE_BUYなら新規買いですか?
必ずしもそうとは限りません。Deal履歴では、DEAL_TYPEとDEAL_ENTRYを合わせて確認してください。新規、決済、反転などの区別にはDEAL_ENTRYも重要です。
SymbolInfoDoubleとSymbolInfoIntegerはどう使い分けますか?
double系プロパティはSymbolInfoDouble、integer系プロパティはSymbolInfoIntegerで取得します。Bid、Ask、Point、VolumeStepなどはdouble系、Digits、Spread、StopsLevel、FillingModeなどはinteger系として確認することが多いです。
ORDER_FILLING_FOK / IOC / RETURNは何を確認しますか?
注文の約定方式を指定するために使います。銘柄側が対応していない方式を指定すると、INVALID_FILLなどの原因になるため、SYMBOL_FILLING_MODEとrequest.type_fillingを照合してください。
ACCOUNT_BALANCEとACCOUNT_EQUITYは何が違いますか?
ACCOUNT_BALANCEは残高、ACCOUNT_EQUITYは含み損益を反映した有効証拠金です。ロット計算やrisk判定では、どちらを基準にしているかを明確にしてください。
TRADE_ACTION_DEALとORDER_TYPE_BUYはどう違いますか?
TRADE_ACTION_DEALは取引リクエストの操作種別で、成行注文や成行決済を行うactionです。ORDER_TYPE_BUYは注文方向・注文種別です。MqlTradeRequestでは、actionとtypeを分けて設定します。
列挙型や定数の指定ミスはどのログで確認できますか?
Expertsログのrequest内容、OrderSend結果、result.retcode、GetLastError、SymbolInfoログ、Journalログを確認します。定数指定ミス、銘柄仕様不一致、サーバー側拒否を分けて確認してください。
開発依頼前に何を整理すればよいですか?
EA名、インジケーター名、バージョン、対象銘柄、時間足、注文種別、filling方式、setファイル、Expertsログ、Journalログ、スクリーンショット、再現手順を整理してください。
この記事にない項目はどのように確認すればよいですか?
まず公式リファレンス、MetaEditorの補完、コンパイル結果、Expertsログ、Journalログ、実際の取引結果を確認してください。定数の意味だけでなく、どの関数・構造体・履歴項目で使う値なのかを整理して確認します。
まとめ
MQL5の列挙型・定数では、ENUM_TIMEFRAMES、ENUM_ORDER_TYPE、ENUM_POSITION_TYPE、ENUM_DEAL_TYPE、ENUM_ORDER_STATE、ENUM_SYMBOL_INFO_DOUBLE、ENUM_SYMBOL_INFO_INTEGER、ENUM_ACCOUNT_INFO_DOUBLE、ENUM_TRADE_REQUEST_ACTIONS、ORDER_FILLING系を用途別に理解することが重要です。
Order、Position、Deal、Historyでは、似たBUY / SELL表記でも確認対象が異なります。注文種別、ポジション種別、約定種別、注文状態を混同しないようにしてください。
SymbolInfo系やAccountInfo系では、double系とinteger系を分けて確認します。point、digits、spread、volume step、StopsLevel、FillingMode、balance、equity、margin_freeなどは、EAの発注・risk・検証に直結します。
不具合調査や開発依頼を行う場合は、EA名、インジケーター名、バージョン、銘柄、時間足、注文種別、filling方式、setファイル、Expertsログ、Journalログ、スクリーンショット、再現手順を整理してください。

