技術辞典

MQL5列挙型・定数辞典|ENUM_ORDER_TYPE・ENUM_TIMEFRAMES・ORDER_FILLINGの基本

EAファンクラブ

MQL5でEAやインジケーターを開発する場合、列挙型や定数を正しく理解していないと、注文種別、時間足、ポジション種別、約定種別、銘柄仕様、口座情報、取引リクエストの指定を誤りやすくなります。

特に、ENUM_TIMEFRAMESENUM_ORDER_TYPEENUM_POSITION_TYPEENUM_DEAL_TYPEENUM_ORDER_STATEENUM_SYMBOL_INFO_DOUBLEENUM_SYMBOL_INFO_INTEGERENUM_ACCOUNT_INFO_DOUBLEENUM_TRADE_REQUEST_ACTIONSORDER_FILLING_FOK / IOC / RETURN は、EA開発や不具合調査で頻繁に確認する項目です。

この記事では、MQL5の列挙型・定数を、EA開発や不具合調査で確認しやすい辞典形式で整理します。公式リファレンスの代わりに丸暗記するためではなく、どの定数を、どの場面で使い、どの関数・ログ・エラーと照合するかを整理するための記事です。

注意:この記事はMQL5開発・EA動作確認・インジケーター連携・不具合調査のための技術解説です。特定の売買判断、推奨エントリー、推奨ロット、推奨銘柄、利益保証、勝率保証、損失回避保証を行うものではありません。実運用前には、必ずデモ環境や検証環境で動作を確認してください。

MQL5の列挙型・定数の全体像

MQL5では、時間足、注文種別、ポジション種別、約定種別、注文状態、銘柄情報、口座情報、取引リクエスト種別などを、列挙型や定数で指定します。

列挙型や定数は、単なる文字列ではありません。関数へ渡す値、構造体へ設定する値、ログで確認する値、履歴から読み取る値として使われます。意味を取り違えると、注文が通らない、ポジションを正しく選択できない、履歴集計がズレる、SymbolInfo系の値を誤読する、といった問題が起きます。

分類主な用途代表例関連関数
時間足系チャート時間足、取得時間足、マルチタイムフレーム指定ENUM_TIMEFRAMES、PERIOD_M1、PERIOD_H1CopyRates、iClose、iTime、PeriodSeconds
注文種別系BUY、SELL、指値、逆指値などの注文種別ENUM_ORDER_TYPE、ORDER_TYPE_BUY、ORDER_TYPE_SELLOrderSend、OrderCheck、OrderGetInteger
ポジション種別系保有中ポジションのBUY / SELL確認ENUM_POSITION_TYPE、POSITION_TYPE_BUY、POSITION_TYPE_SELLPositionGetInteger、CPositionInfo
約定種別系履歴上の約定種別、新規・決済の確認ENUM_DEAL_TYPE、DEAL_TYPE_BUY、DEAL_TYPE_SELLHistoryDealGetInteger、CDealInfo
注文状態系注文が有効、約定済み、取消済みかの確認ENUM_ORDER_STATE、ORDER_STATE_PLACED、ORDER_STATE_FILLEDOrderGetInteger、HistoryOrderGetInteger
銘柄情報系point、tick value、最小ロット、spread、StopsLevel確認ENUM_SYMBOL_INFO_DOUBLE、ENUM_SYMBOL_INFO_INTEGERSymbolInfoDouble、SymbolInfoInteger
口座情報系残高、有効証拠金、余剰証拠金、証拠金維持率確認ENUM_ACCOUNT_INFO_DOUBLEAccountInfoDouble、CAccountInfo
取引リクエスト系成行、pending、SL/TP変更、注文削除のaction指定ENUM_TRADE_REQUEST_ACTIONSMqlTradeRequest、OrderSend、OrderCheck
filling方式約定方式の指定ORDER_FILLING_FOK、ORDER_FILLING_IOC、ORDER_FILLING_RETURNOrderSend、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.SellLimitAsk/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.TypeOrderの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、CDealInfoDEAL_ENTRYと組み合わせて新規か決済かを確認します。
DEAL_TYPE_SELL約定種別売り約定新規SELL、BUY決済側の履歴確認などHistoryDealGetInteger、CDealInfoDEAL_TYPEだけで新規・決済を断定しないようにします。
DEAL_TYPE_BALANCE約定種別残高操作入出金、残高調整の履歴確認HistoryDealGetIntegerEAの売買損益集計から除外する場合があります。
DEAL_TYPE_CREDIT約定種別クレジット関連口座履歴確認HistoryDealGetInteger通常の売買損益と分けて扱います。

DEAL_TYPEとDEAL_ENTRYは分けて確認する

Deal履歴を集計する時は、DEAL_TYPEだけで新規・決済を判断しないようにします。DEAL_ENTRYも合わせて確認することで、IN、OUT、INOUTなどの区別がしやすくなります。

確認対象意味主な用途
DEAL_TYPEBUY約定かSELL約定か、残高操作かなど約定種別の分類
DEAL_ENTRY新規、決済、反転など損益集計、決済履歴確認
DEAL_PROFIT約定損益日次損益、EA別損益確認
DEAL_MAGICMagic NumberEA別・ロジック別履歴確認

ENUM_ORDER_STATE

ENUM_ORDER_STATEは、注文状態を表す列挙型です。現在注文や履歴注文を確認する時に、注文が配置済み、約定済み、取消済み、拒否済みなどを確認できます。

定数/enum分類意味使う場面関連関数注意点
ORDER_STATE_STARTED注文状態注文処理開始注文状態の監査OrderGetInteger、HistoryOrderGetInteger通常の最終判定では他状態と合わせて確認します。
ORDER_STATE_PLACED注文状態注文配置済みpending orderの確認OrderGetInteger約定済みとは限りません。
ORDER_STATE_FILLED注文状態注文が約定済み履歴注文の確認HistoryOrderGetIntegerDeal履歴も合わせて確認します。
ORDER_STATE_CANCELED注文状態注文取消済みpending取消、手動取消の確認HistoryOrderGetIntegerEAによる取消か手動取消かはログと照合します。
ORDER_STATE_REJECTED注文状態注文拒否注文失敗の履歴確認HistoryOrderGetIntegerretcodeやJournalログも確認します。
ORDER_STATE_EXPIRED注文状態期限切れ期限付きpending orderの確認HistoryOrderGetIntegerexpiration設定を確認します。

ENUM_SYMBOL_INFO_DOUBLE

ENUM_SYMBOL_INFO_DOUBLEは、SymbolInfoDoubleで取得するdouble系の銘柄情報を指定するための列挙型です。価格、point、tick value、ロット条件などの確認に使います。

定数/enum分類意味使う場面関連関数注意点
SYMBOL_BID銘柄情報 doubleBid価格SELL価格、BUY決済、spread計算SymbolInfoDouble、SymbolInfoTick価格更新状態も確認します。
SYMBOL_ASK銘柄情報 doubleAsk価格BUY価格、SELL決済、spread計算SymbolInfoDouble、SymbolInfoTickBidとの距離をpoint換算します。
SYMBOL_POINT銘柄情報 double最小価格単位point換算、spread、SL/TP距離SymbolInfoDouble銘柄により0.01、0.001などが異なります。
SYMBOL_TRADE_TICK_VALUE銘柄情報 doubletick value損益計算、リスク計算、銘柄仕様確認SymbolInfoDouble口座通貨や銘柄仕様で意味が変わる場合があります。
SYMBOL_VOLUME_MIN銘柄情報 double最小ロットロットvalidationSymbolInfoDouble最小未満の注文は拒否されます。
SYMBOL_VOLUME_STEP銘柄情報 doubleロット刻みロット丸め、NormalizeVolume処理SymbolInfoDoublestep不一致は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制限、ログ表示SymbolInfoIntegerpoint単位か価格差かを明確にします。
SYMBOL_TRADE_MODE銘柄情報 integer銘柄の取引モード取引可能かの確認SymbolInfoInteger取引不可銘柄では注文できません。
SYMBOL_TRADE_STOPS_LEVEL銘柄情報 integerSL/TPやpending価格の最小距離SL/TP設定、pending order作成SymbolInfoIntegerINVALID_STOPS対策で重要です。
SYMBOL_TRADE_FREEZE_LEVEL銘柄情報 integer注文変更やSL/TP変更の制限距離modify、SL/TP変更、pending変更SymbolInfoInteger価格が近すぎると変更できない場合があります。
SYMBOL_FILLING_MODE銘柄情報 integer対応している約定方式ORDER_FILLING指定、CTrade設定SymbolInfoIntegerINVALID_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、OrderCheckNO_MONEY対策で確認します。
ACCOUNT_MARGIN_LEVEL口座情報 double証拠金維持率リスク管理、停止判定、状態表示AccountInfoDouble口座状態により急変します。
ACCOUNT_PROFIT口座情報 double現在の含み損益全体損益確認、risk表示AccountInfoDoubleEA別損益ではないため、Magic別集計とは分けます。

ENUM_TRADE_REQUEST_ACTIONS

ENUM_TRADE_REQUEST_ACTIONSは、MqlTradeRequest.actionへ設定する取引操作種別です。新規成行、pending order、SL/TP変更、注文削除など、何を行うリクエストなのかを指定します。

定数/enum分類意味使う場面関連関数注意点
TRADE_ACTION_DEAL取引リクエスト成行注文または成行決済BUY / SELLの成行発注、ポジション決済OrderSend、MqlTradeRequesttype、volume、price、deviationなども確認します。
TRADE_ACTION_PENDING取引リクエストpending orderの作成指値・逆指値注文OrderSend、MqlTradeRequestprice、type、expiration、StopsLevelを確認します。
TRADE_ACTION_SLTP取引リクエストSL/TP変更保有ポジションのSL/TP設定・変更OrderSend、CTrade.PositionModifyStopsLevel、FreezeLevel、position ticketを確認します。
TRADE_ACTION_MODIFY取引リクエスト注文変更pending orderの価格や期限変更OrderSend、MqlTradeRequestorder 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.SetTypeFillingEA側の約定数量確認が重要です。
ORDER_FILLING_RETURN約定方式未約定分を残す方式pendingや一部取引条件で使う場合OrderSend、CTrade.SetTypeFilling銘柄・注文種別により使えない場合があります。
SYMBOL_FILLING_MODE銘柄仕様銘柄側が対応するfilling方式発注前の仕様確認SymbolInfoIntegerrequest.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や定数をその場の数値として扱わず、どの関数・構造体・履歴項目に対応する値なのかを明確にします。

責務主な確認対象実装上の注意確認ログ
timeframeENUM_TIMEFRAMES、PERIOD_CURRENT、PERIOD_M15などチャート時間足と取得時間足を分けます。TIMEFRAME_BASIS、BAR_TIME
order requestENUM_ORDER_TYPE、ENUM_TRADE_REQUEST_ACTIONSrequest.actionとrequest.typeを混同しないようにします。REQUEST_DUMP、ORDER_SEND
position scanENUM_POSITION_TYPEBUY / SELL方向、ticket、magicを合わせて確認します。POSITION_SNAPSHOT、POSITION_SCOPE
history auditENUM_DEAL_TYPE、DEAL_ENTRY、ENUM_ORDER_STATEDealとOrder履歴を分けます。HISTORY_AUDIT、DEAL_AUDIT
symbol specENUM_SYMBOL_INFO_DOUBLE、ENUM_SYMBOL_INFO_INTEGERdouble系とinteger系の取得関数を分けます。SYMBOL_SPEC、LOT_SPEC、STOPS_CHECK
account riskENUM_ACCOUNT_INFO_DOUBLEbalance、equity、margin_freeを分けて扱います。ACCOUNT_STATE、MARGIN_CHECK
fillingORDER_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、PeriodSecondsPERIOD_CURRENTはチャート時間足に依存します。時系列データ・価格取得
ENUM_ORDER_TYPE注文種別注文の種類を表す列挙型成行、指値、逆指値注文OrderSend、OrderCheck、OrderGetIntegerOrderとPositionを混同しないようにします。注文・ポジション・履歴管理
ENUM_POSITION_TYPEポジション種別保有中ポジションのBUY / SELL保有確認、決済対象確認、方向別集計PositionGetInteger、CPositionInfo現在保有中のPositionに対する値です。注文・ポジション・履歴管理
ENUM_DEAL_TYPE約定種別履歴上の約定種別Deal履歴確認、損益集計HistoryDealGetInteger、CDealInfoDEAL_ENTRYと合わせて確認します。注文・ポジション・履歴管理
ENUM_ORDER_STATE注文状態注文の状態を表す列挙型pending、約定済み、取消済み、拒否済み確認OrderGetInteger、HistoryOrderGetInteger現在注文と履歴注文を分けます。注文・ポジション・履歴管理
ENUM_SYMBOL_INFO_DOUBLE銘柄情報double系の銘柄情報プロパティBid、Ask、point、tick value、ロット条件SymbolInfoDoubleinteger系プロパティと混同しないようにします。時系列データ・価格取得
ENUM_SYMBOL_INFO_INTEGER銘柄情報integer系の銘柄情報プロパティdigits、spread、StopsLevel、filling modeSymbolInfoInteger銘柄仕様による差をログに残します。ロット・証拠金・銘柄仕様
ENUM_ACCOUNT_INFO_DOUBLE口座情報double系の口座情報プロパティ残高、有効証拠金、余剰証拠金、証拠金維持率AccountInfoDouble、CAccountInfobalanceとequityを混同しないようにします。ロット・証拠金・銘柄仕様
ENUM_TRADE_REQUEST_ACTIONS取引リクエスト取引操作の種類成行、pending、SL/TP変更、注文削除MqlTradeRequest、OrderSendrequest.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 modeINVALID_FILLの原因確認に必要です。
エラー内容GetLastError、TRADE_RETCODE、表示メッセージ定数指定ミスかサーバー拒否かを分けるため
Expertsログrequest.action、request.type、type_filling、SymbolInfo、AccountInfoEA内部で使った値を追うため
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ログ、スクリーンショット、再現手順を整理してください。

ABOUT ME
記事URLをコピーしました