MQL4のOrderSendとは?EA開発で確認する注文処理の基本
MQL4のOrderSendは、MT4 EAから注文を送るために使われる代表的な注文処理です。
EA開発では、エントリー条件だけでなく、実際に注文を送る処理、注文種別、ロット、価格、SL/TP、MagicNumber、コメント、注文失敗時のエラー確認まで整理する必要があります。
この記事では、MQL4のOrderSendについて、MT4 EAの注文処理で確認したい基本項目、MagicNumberとの関係、注文エラー時の確認順、既存EA改修で見るポイント、相談前に整理する情報をまとめます。
なお、この記事はMQL4、MT4 EA、OrderSend、注文処理、注文エラー、既存EA改修の技術確認を目的とした記事です。投資助言、売買指示、利益保証、勝率保証、損失回避保証、推奨ロット、推奨銘柄、推奨エントリータイミングを目的としたものではありません。
この記事で確認すること
- OrderSendとは何か
- MT4 EAで注文を送る時に確認する項目
- 通貨ペア、注文種別、ロット、価格、SL/TPの確認
- MagicNumberとの関係
- 注文エラー時に見るべきログと条件
- 既存EA改修でOrderSendを見る時の注意点
- コード例を扱う時の注意点
- 相談前に整理する情報
OrderSendとは何か
MT4 EAで注文を送る処理
OrderSendは、MT4 EAから新規注文を送るために使われる注文処理です。
EAが条件判定を行い、注文条件を満たした時に、通貨ペア、注文種別、ロット、価格、スリッページ、SL/TP、コメント、MagicNumberなどを指定して注文を送ります。
ただし、OrderSendを書けば必ず注文が通るわけではありません。MT4側の自動売買設定、EA個別許可、口座状態、取引時間、証拠金、ロット制限、価格ずれ、SL/TP距離などによって注文が拒否される場合があります。
成行注文と予約注文
OrderSendでは、成行注文だけでなく、予約注文を扱う場合もあります。
成行注文では、現在のBidまたはAskに近い価格で注文を送ります。予約注文では、指定価格に到達した時に注文するための条件を設定します。
EAを確認する時は、そのEAが成行注文だけを使っているのか、Buy Stop、Sell Stop、Buy Limit、Sell Limitなどの予約注文も使っているのかを分けて確認してください。
EAの売買実行部分
OrderSendは、EAの中でも売買実行に近い重要部分です。
エントリー条件が正しくても、OrderSendに渡す値が不正であれば注文は失敗します。逆に、OrderSendの呼び出し条件が広すぎると、想定より多く注文する可能性があります。
そのため、EA開発や既存EA改修では、エントリー判定とOrderSend呼び出し部分を分けて確認することが重要です。
| 確認対象 | 主な内容 | 確認理由 |
|---|---|---|
| エントリー条件 | 注文する前の判定 | なぜ注文しようとしたか確認するため |
| OrderSend | 実際に注文を送る処理 | 注文値とエラーを確認するため |
| エラー処理 | 注文失敗時の確認 | 原因をログで追うため |
| MagicNumber | EA注文の識別番号 | 他EAや手動注文と分けるため |
OrderSendで確認する主な項目
通貨ペア
OrderSendでは、どの通貨ペアへ注文を送るかを確認します。
チャートの通貨ペアに注文するEAもあれば、コード内で固定された通貨ペアへ注文するEAもあります。口座によっては、通貨ペア名にサフィックスが付く場合があります。
注文が出ない場合は、EAが想定している通貨ペア名と、MT4上の実際の銘柄名が一致しているか確認してください。
注文種別
注文種別では、BUY、SELL、予約注文のどれを送るかを確認します。
BUY条件の時にBUYを送っているか、SELL条件の時にSELLを送っているか、反対方向を誤って指定していないかを確認します。
既存EA改修では、注文種別が固定値になっているのか、条件によって切り替えているのかも確認してください。
ロット
ロットは注文数量に関係する項目です。
この記事では特定のロットを推奨しません。確認するべきことは、EAがどの変数またはInputsからロットを取得しているか、最小ロットやロットステップに合っているか、複数EAを使う場合に合計ロットが想定外になっていないかです。
注文エラーが出る場合、ロットが口座仕様に合っていない、証拠金が不足している、ロットが0または不正値になっている可能性があります。
価格
OrderSendでは、注文価格も確認対象です。
成行BUYではAsk、成行SELLではBidを使うのが一般的な考え方です。価格の取得タイミングや桁数処理が不適切な場合、価格ずれや注文拒否につながる場合があります。
価格関連のエラーが出る場合は、Bid、Ask、Digits、Point、RefreshRatesの扱い、注文直前の価格更新を確認してください。
スリッページ
スリッページは、注文価格と実際の約定価格の許容差に関係する項目です。
スリッページの扱いは、EAの注文可否や注文失敗時の確認に関係します。ただし、スリッページの値を大きくすればよいという話ではありません。
確認するべきことは、EAがどの単位でスリッページを指定しているか、口座の桁数や銘柄仕様に合っているか、注文失敗時にどのエラーが出ているかです。
SL/TP
SL/TPは、注文時に設定する損切り・利確の価格です。
EAによっては、OrderSend時にSL/TPを同時に設定する場合もあれば、注文後にOrderModifyで設定する場合もあります。
SL/TPが近すぎる場合、ストップレベルや価格仕様により注文が拒否されることがあります。注文エラーが出る場合は、SL/TP距離、StopLevel、FreezeLevel、桁数、価格方向を確認してください。
コメント
注文コメントは、注文履歴やポジション確認で補助的に使われます。
EA名、ロジック名、方向、設定名などをコメントに入れる設計もあります。ただし、口座番号、Webhook URL、APIキー、認証トークンなどの重要情報をコメントに入れないよう注意してください。
MagicNumber
MagicNumberは、EA注文を識別するための番号です。
OrderSendで指定したMagicNumberは、その後のOrderSelect、OrderClose、OrderModify、履歴確認、ログ確認に関係します。
複数EAを同じ口座で使う場合は、MagicNumberの重複がないか、意図した管理対象になっているかを確認してください。
| OrderSendの確認項目 | 見る内容 | 起きやすい問題 |
|---|---|---|
| 通貨ペア | チャート銘柄か固定銘柄か | サフィックス違いで注文しない |
| 注文種別 | BUY / SELL / 予約注文 | 方向の取り違え |
| ロット | Inputs、計算値、最小ロット | 不正ロット、証拠金不足 |
| 価格 | Bid、Ask、桁数、価格更新 | 価格ずれ、注文拒否 |
| SL/TP | 価格方向、距離、StopLevel | ストップ距離不足 |
| MagicNumber | EA注文の識別番号 | 他EAの注文と混在 |
MagicNumberとの関係
EA注文の識別
MagicNumberは、EAが自分の注文を識別するために使う番号です。
OrderSendでMagicNumberを指定しておくと、後からその注文をEA側で探し、決済、変更、集計、通知などに使うことができます。
MagicNumberを使わない、または複数EAで同じ番号を使っている場合、どのEAの注文なのか判断しにくくなります。
複数EA運用
同じMT4口座で複数EAを使う場合、MagicNumberの設計が重要になります。
EAごと、通貨ペアごと、ロジックごとにMagicNumberを分けることで、注文管理や決済対象を分離しやすくなります。
既存EAを改修する場合は、OrderSendで指定しているMagicNumberと、決済処理側で参照しているMagicNumberが一致しているか確認してください。
決済対象の取り違え防止
MagicNumber確認で特に重要なのは、決済対象の取り違え防止です。
新規注文では正しくMagicNumberを指定していても、決済処理側でMagicNumberを見ていない場合、別EAや手動注文を対象にしてしまう可能性があります。
OrderSendだけでなく、OrderClose、OrderModify、OrderSelect周辺の条件も合わせて確認してください。
| 確認箇所 | 確認すること | 注意点 |
|---|---|---|
| OrderSend | MagicNumberを指定しているか | 注文識別の起点になる |
| OrderSelect | 対象注文を正しく選んでいるか | 通貨ペアとMagicNumberで絞る |
| OrderClose | 決済対象が正しいか | 別EAや手動注文を巻き込まない |
| ログ | MagicNumberが出ているか | 調査時に追跡しやすくする |
注文エラー時に確認すること
ロット制限
注文エラーが出た場合は、まずロットが口座仕様に合っているか確認してください。
最小ロット、最大ロット、ロットステップに合わない値をOrderSendへ渡していると、注文が拒否されることがあります。
ロットを計算しているEAでは、計算後の値が正規化されているか、0や負の値になっていないか、ログに出して確認すると切り分けしやすくなります。
証拠金
証拠金不足でも注文は失敗します。
複数EAを同時に使っている場合や、複数ポジションを持つEAでは、EA単体の設定だけでなく、口座全体の保有状況も確認してください。
証拠金に関係するエラーが疑われる場合は、Journalログ、Expertsログ、口座残高、証拠金維持率、保有ポジションを合わせて確認します。
取引時間
取引時間外にOrderSendを実行しようとすると、注文が通らない場合があります。
EA側の稼働時間設定、MT4サーバー時間、銘柄の取引時間、週末、メンテナンス時間を確認してください。
取引時間条件があるEAでは、注文しない理由をログに出しておくと、注文エラーなのか、注文前にブロックしているのかを分けて確認できます。
価格ずれ
注文価格が現在価格からずれている場合、注文が拒否されることがあります。
価格取得からOrderSendまでの間に時間が空いている、RefreshRatesを行っていない、桁数処理が不適切、BidとAskを取り違えている場合などが確認対象です。
ストップレベル
SL/TPの距離が近すぎる場合、ストップレベルの制限により注文が拒否されることがあります。
OrderSend時にSL/TPを入れる場合は、価格方向、距離、StopLevel、FreezeLevel、銘柄の桁数を確認してください。
EAによっては、注文直後にOrderModifyでSL/TPを設定する設計の方が適している場合もあります。既存EAを改修する時は、現在の設計を確認してから判断します。
接続状態
MT4の接続状態や自動売買設定も確認対象です。
EAのコードが正しくても、MT4が未接続、自動売買OFF、EA個別許可OFF、口座ログイン不備、読み取り専用状態などでは注文できません。
| 注文エラーの確認項目 | 確認する内容 | 見る場所 |
|---|---|---|
| ロット | 最小ロット、ロットステップ、計算後の値 | Inputs、Expertsログ、銘柄仕様 |
| 証拠金 | 口座残高、保有ポジション、必要証拠金 | ターミナル、Journalログ |
| 取引時間 | サーバー時間、銘柄取引時間 | MT4、Expertsログ |
| 価格 | Bid、Ask、価格更新、桁数 | Expertsログ、チャート |
| SL/TP | 距離、方向、StopLevel | 銘柄仕様、ログ |
| 接続状態 | ログイン、自動売買、通信 | Journalログ、MT4画面 |
既存EA改修で見るポイント
OrderSendの呼び出し箇所
既存EAを改修する場合は、まずOrderSendがどこで呼ばれているか確認してください。
複数ロジックを持つEAでは、OrderSendが複数箇所にある場合があります。BUY用、SELL用、ナンピン用、再エントリー用、予約注文用など、用途ごとに分かれている可能性があります。
呼び出し箇所を確認せず一部だけ修正すると、別の注文処理が古いまま残る場合があります。
エラー処理
OrderSendの戻り値とエラー処理を確認してください。
注文に失敗した時に、エラー番号、通貨ペア、注文種別、ロット、価格、SL/TP、MagicNumber、発生時刻をログに出しているかが重要です。
エラー処理がないEAでは、注文が失敗しても理由が分からず、不具合調査が難しくなります。
リトライ
既存EAにリトライ処理がある場合は、回数、間隔、条件を確認してください。
リトライが多すぎると、同じ注文を何度も試す可能性があります。逆に、必要な確認なしに一度だけで終了すると、一時的な価格ずれや通信状態で注文機会を逃す場合があります。
リトライは、売買判断ではなく、注文処理の安定性確認として慎重に扱う必要があります。
ログ出力
OrderSend周辺では、注文前ログ、注文成功ログ、注文失敗ログを分けると確認しやすくなります。
注文前ログでは、注文しようとした理由と値を確認します。注文成功ログでは、チケット番号や注文内容を確認します。注文失敗ログでは、エラー番号と注文条件を確認します。
パラメータとの連動
OrderSendに渡している値が、Inputsやsetファイルと正しく連動しているか確認してください。
Inputsでロットを変更したつもりでも、コード内で固定ロットを使っている場合があります。MagicNumber、SL/TP、スリッページ、コメントなども、Inputsと実際の注文値が一致しているか確認します。
| 改修時の確認箇所 | 確認すること | 注意点 |
|---|---|---|
| 呼び出し箇所 | OrderSendが何箇所あるか | 一部だけ修正しても不十分な場合がある |
| 戻り値 | 注文成功・失敗を判定しているか | 失敗時の処理が必要 |
| エラー処理 | GetLastErrorなどで原因を残しているか | ログがないと調査しにくい |
| リトライ | 回数、間隔、条件 | 過剰な再送に注意 |
| Inputs連動 | setファイルの値が反映されるか | 固定値が残っていないか確認 |
コード例を扱う時の注意
売買ロジックの推奨ではない
OrderSendのコード例を確認する場合でも、それは売買方法の推奨ではありません。
コード例は、MQL4で注文処理を理解するための技術確認として扱います。どの条件で売買すべきか、どのロットがよいか、どの銘柄で使うべきかを示すものではありません。
環境により条件が異なる
同じOrderSend処理でも、口座、銘柄、桁数、最小ロット、スプレッド、取引時間、サーバー状態によって結果が変わる場合があります。
コードだけを見て判断せず、実際のMT4環境、銘柄仕様、setファイル、Expertsログ、Journalログを合わせて確認してください。
実運用前に検証が必要
OrderSendを含むEAは、注文処理を行うため、実運用前に検証が必要です。
バックテスト、デモ環境、少数条件での確認、ログ確認、注文失敗時の挙動確認、自動売買ON/OFFの確認、VPSでの再起動後確認などを行ってから判断してください。
この記事では、売買判断ではなく、注文処理を安全に確認するための技術項目を扱います。
相談前に送る情報
エラー番号
注文エラーの相談では、エラー番号を整理してください。
OrderSendが失敗した時に、EAがエラー番号をログに出している場合があります。エラー番号だけでなく、どの注文条件で発生したかも合わせて確認します。
Expertsログ
Expertsログは、EA側の注文処理、注文前条件、注文成功、注文失敗、エラー番号を確認するために重要です。
相談時には、注文しようとした時刻前後のExpertsログを整理してください。ログが多い場合は、発生時刻、EA名、MagicNumber、通貨ペアで絞ると確認しやすくなります。
該当箇所
mq4ソースがある場合は、OrderSendの該当箇所を確認してください。
ただし、コード全体の一部だけを見ると、前後の条件や関数呼び出しが分からない場合があります。OrderSendの前にどの条件を満たしているか、失敗時にどの処理へ進むかも確認対象です。
注文条件
注文条件を整理してください。
BUYなのかSELLなのか、どの通貨ペアなのか、どの時間足なのか、ロットはいくつか、SL/TPは指定しているか、MagicNumberは何か、注文前にどのフィルターを通っているかを確認します。
setファイル
setファイルは、EAのInputs設定を確認するために重要です。
ロット、MagicNumber、SL/TP、スリッページ、稼働時間、最大ポジション、通知設定、ログ設定などがsetファイルに含まれる場合があります。
setファイルを共有する場合は、Webhook URL、APIキー、GAS URL、認証トークンなどの実値が含まれていないか確認してください。
送らない方がよい情報
OrderSendや注文エラーの相談では、setファイル、ログ、スクリーンショットに重要情報が含まれる場合があります。
| そのまま送らない方がよい情報 | 注意点 |
|---|---|
| 口座番号 | スクリーンショットやログへの映り込みに注意 |
| ログインパスワード | 確認に不要なため送らない |
| Webhook URL | 通知先へ接続できる情報のため注意 |
| GAS URL | 外部シート連携先に関係するため注意 |
| APIキー | 外部サービス認証に関係するため注意 |
| 認証トークン | 利用権限に関係するためマスクする |
| VPSログイン情報 | サーバー操作権限に関係するため送らない |
よくあるトラブルと確認順
OrderSend関連のトラブルでは、エントリー条件、注文値、MT4設定、口座状態、ログを分けて確認することが重要です。
| 症状 | 主な原因候補 | 確認順 |
|---|---|---|
| 条件成立しているのに注文しない | OrderSend前のブロック、取引時間外、自動売買OFF | 条件ログ、稼働時間、自動売買状態を確認 |
| OrderSendが失敗する | ロット、価格、SL/TP、証拠金、接続状態 | エラー番号、Expertsログ、Journalログを確認 |
| 想定外のロットで注文する | Inputs未反映、固定値、計算ミス | setファイル、ロット計算ログを確認 |
| 別EAの注文を決済しているように見える | MagicNumber重複、決済条件の絞り込み不足 | OrderSendとOrderClose周辺のMagicNumberを確認 |
| 注文エラーの理由が分からない | エラー処理・ログ不足 | OrderSend戻り値、GetLastError、ログ出力を確認 |
よくある質問
MQL4のOrderSendとは何ですか?
MT4 EAから注文を送るために使われる代表的な注文処理です。通貨ペア、注文種別、ロット、価格、SL/TP、コメント、MagicNumberなどを指定して注文します。
OrderSendを見ると何が分かりますか?
注文種別、ロット、価格、SL/TP、MagicNumber、コメント、エラー処理などを確認できます。EAがどの条件でどの注文を送ろうとしているかを調べる時に重要です。
OrderSendのエラーはどこで確認しますか?
Expertsログ、Journalログ、エラー番号、注文条件、ロット制限、取引時間、証拠金、価格、SL/TP距離などを確認します。
OrderSendを変更すればEAの動きは変わりますか?
変わる可能性があります。OrderSendは注文処理の重要部分なので、変更前に呼び出し箇所、注文条件、MagicNumber、エラー処理、決済処理への影響を確認してください。
OrderSendの記事は売買方法の推奨ですか?
いいえ。この記事はMQL4の注文処理を理解するための技術解説であり、売買判断、利益、勝率、損失回避を保証するものではありません。
MagicNumberはOrderSendで必ず確認すべきですか?
複数EAを使う場合や、EA注文と手動注文を分けたい場合は重要です。OrderSendで指定したMagicNumberと、決済処理側の絞り込み条件が一致しているか確認してください。
OrderSendが成功したかどうかはどう確認しますか?
戻り値、チケット番号、Expertsログ、Journalログ、ターミナル上の注文状態を確認します。失敗時はエラー番号と注文条件を合わせて確認してください。
まとめ
OrderSendはEAの注文処理の入口
OrderSendは、MT4 EAが実際に注文を送る入口となる重要な処理です。
EA開発では、エントリー条件だけでなく、OrderSendへ渡す通貨ペア、注文種別、ロット、価格、スリッページ、SL/TP、コメント、MagicNumber、エラー処理を分けて確認する必要があります。
注文エラーはログと条件を分けて確認する
注文が通らない場合は、EA本体の不具合と決めつけず、ロット、証拠金、取引時間、価格ずれ、ストップレベル、接続状態、自動売買設定、MagicNumber、setファイル、Expertsログ、Journalログを順番に確認してください。
既存EAを改修する場合は、OrderSendの呼び出し箇所、戻り値、エラー処理、リトライ、ログ、Inputsとの連動を確認してから修正することが重要です。
相談前に整理しておきたい情報
- 対象EA名、ファイル名、バージョン
- mq4 / ex4の有無
- OrderSendの呼び出し箇所
- 注文種別、通貨ペア、時間足
- ロット、価格、SL/TP、スリッページ、MagicNumber
- setファイル、Inputs設定、スクリーンショット
- 注文失敗時のエラー番号
- Expertsログ、Journalログ、発生時刻
- 変更前後の状態が分かるメモ
- 複数EA運用や手動注文との関係
関連ページ
- MQL4の勉強方法|EA・インジケーター開発前に知っておきたいこと
- MQL4とは?MT4のEA・インジケーター開発でできること
- MT4 EAが動かない時に確認すること
- MT4 EAを複数稼働する前に確認すること
- MT4 EAの設定変更をする前に確認すること
- MT4 EAをMT5へ移行・作り直す前に確認すること
- EA作成・改修相談
- 既存EA・インジケーター改修相談
- 不具合報告・調査依頼について
- 免責事項
MQL4のOrderSend周辺で注文エラーが出る、既存EAの注文処理を確認したい、MagicNumberやロット指定、SL/TP、エラー処理を見直したい場合は、対象EA、mq4/ex4の有無、setファイル、Expertsログ、Journalログ、エラー番号を整理したうえでご相談ください。

