MQL5ロット・証拠金・銘柄仕様完全ガイド|volume step・tick value・stops levelの確認
MQL5でEAの注文処理を実装する場合、ロット、証拠金、銘柄仕様、SL/TP距離、tick value、volume step、stops levelなどの確認が重要です。
注文条件や売買ロジックが正しく見えても、銘柄仕様に合わないロット、volume stepに合わない数量、証拠金不足、stops levelに近すぎるSL/TP、freeze level内の変更処理などがあると、注文や変更が失敗する場合があります。
この記事では、MQL5でロット、volume、最小ロット、最大ロット、volume step、digits、point、tick size、tick value、spread、stops level、freeze level、OrderCalcMargin、OrderCalcProfit、代表的な注文エラーを確認する方法を、技術学習向けに整理します。
このページは、MT5 / MQL5の技術学習記事です。投資判断、売買タイミング、利益や結果の保証、特定のロット値、特定銘柄の利用誘導、特定ブローカー誘導を目的とした内容ではありません。
- この記事で扱う範囲
- ロットとvolumeの基本
- 最小ロット・最大ロット・volume step
- volume stepに合わせた丸め
- digits・point・tick size・tick value
- spreadの確認
- stops levelとfreeze level
- OrderCalcMarginの基本
- OrderCalcProfitの基本
- 証拠金不足時に確認すること
- TRADE_RETCODE_INVALID_VOLUMEの確認
- TRADE_RETCODE_NO_MONEYの確認
- TRADE_RETCODE_INVALID_STOPSの確認
- ブローカー・銘柄差で起きる問題
- 固定のロット値を本文で提示しない理由
- EAに銘柄仕様ログを入れる理由
- 開発依頼前に確認すること
- 送ってはいけない情報
- MQL5ロット・証拠金・銘柄仕様確認チェック表
- 次に読む技術講座
- 次に確認するページ
- よくある質問
- まとめ
この記事で扱う範囲
この記事で扱うのは、EAの注文処理前に確認する銘柄仕様と、注文失敗時に見るべき技術項目です。
ロット値の良し悪しや運用判断ではなく、MQL5上で注文可能なvolumeになっているか、証拠金確認ができているか、SL/TP距離が銘柄仕様に合っているか、ログで原因を追えるかを確認します。
| この記事で扱うこと | 扱わないこと |
|---|---|
| 最小ロット・最大ロット・volume stepの確認 | 運用に使うロット値の提示 |
| tick size・tick value・point・digitsの確認 | 銘柄選定や売買判断 |
| OrderCalcMargin / OrderCalcProfitの使い方 | 利益や損失結果の保証 |
| stops level / freeze levelの確認 | 特定のSL/TP設定の推奨 |
| 注文エラー時の確認項目 | 特定ブローカーへの誘導 |
| 問い合わせ前に整理する情報 | 口座開設やIB誘導 |
注文処理やCTradeの基本は、MQL5標準ライブラリ・CTrade完全ガイドもあわせて確認してください。
ロットとvolumeの基本
MT5 / MQL5では、注文数量はvolumeとして扱います。利用者画面ではロットと呼ばれることが多いですが、MQL5の注文処理ではvolume、SYMBOL_VOLUME_MIN、SYMBOL_VOLUME_MAX、SYMBOL_VOLUME_STEPなどの銘柄仕様を確認します。
EA側で入力されたロット値をそのまま注文へ渡すと、銘柄仕様に合わず注文エラーになる場合があります。EAでは、注文前に対象symbolのvolume条件を確認し、許容範囲とstepに合わせる必要があります。
| 項目 | MQL5で確認する例 | 確認する理由 |
|---|---|---|
| 最小volume | SYMBOL_VOLUME_MIN | これ未満の数量は注文できない場合がある |
| 最大volume | SYMBOL_VOLUME_MAX | これを超える数量は注文できない場合がある |
| volume step | SYMBOL_VOLUME_STEP | 注文数量の刻みに合わせるため |
| volume limit | SYMBOL_VOLUME_LIMIT | 銘柄ごとの総量制限確認に使う場合がある |
| 現在ポジション | Position情報 | 追加注文や最大数制御に関係する |
| 未約定注文 | Order情報 | 予約注文を含めた確認が必要な場合がある |
ロットやvolumeの確認は、売買判断ではなく、EAが注文可能な形式でリクエストを出せているかを確認するための技術項目です。
最小ロット・最大ロット・volume step
MQL5で注文数量を扱う時は、対象symbolの最小volume、最大volume、volume stepを確認します。
たとえば、入力値が見た目上は小数で正しく見えても、volume stepに合っていない場合、サーバー側で無効な数量として扱われることがあります。
| 確認項目 | 意味 | 注文前の確認 |
|---|---|---|
| SYMBOL_VOLUME_MIN | 最小注文数量 | 入力volumeが下回っていないか |
| SYMBOL_VOLUME_MAX | 最大注文数量 | 入力volumeが上回っていないか |
| SYMBOL_VOLUME_STEP | 注文数量の刻み | step単位へ丸められているか |
| SYMBOL_VOLUME_LIMIT | 銘柄ごとの数量制限 | 既存保有や注文との合算確認が必要な場合がある |
| Normalize処理 | volumeを銘柄仕様へ合わせる処理 | 丸め後の値をログに残す |
EAの注文前ログでは、入力されたvolumeと、銘柄仕様に合わせた後のvolumeを分けて記録すると確認しやすくなります。
double volume_min = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN);
double volume_max = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX);
double volume_step = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP);
PrintFormat("DIAG/SYMBOL_VOLUME symbol=%s min=%.4f max=%.4f step=%.4f",
_Symbol,
volume_min,
volume_max,
volume_step);この例は、銘柄仕様をログへ出す最小例です。特定のvolume値を示すものではありません。
volume stepに合わせた丸め
EAでは、入力されたvolumeをそのまま使うのではなく、対象symbolのvolume stepに合わせて丸める処理を用意することがあります。
丸め方はEAの仕様によって異なります。切り捨て、四捨五入、上限下限への調整など、どの方針を採用するかを決め、ログで確認できるようにします。
double NormalizeVolumeBySymbol(const string symbol, const double requested_volume)
{
double vmin = SymbolInfoDouble(symbol, SYMBOL_VOLUME_MIN);
double vmax = SymbolInfoDouble(symbol, SYMBOL_VOLUME_MAX);
double vstep = SymbolInfoDouble(symbol, SYMBOL_VOLUME_STEP);
if(vstep <= 0.0)
return requested_volume;
double adjusted = MathFloor(requested_volume / vstep) * vstep;
if(adjusted < vmin)
adjusted = vmin;
if(adjusted > vmax)
adjusted = vmax;
return adjusted;
}この例は、volume stepに合わせる考え方を示す最小例です。実際のEAでは、丸め方、最小値未満の場合の扱い、最大値超過時の扱い、注文しない判断にするか補正するかを仕様として決めてください。
| 確認項目 | 確認する内容 | ログに残す例 |
|---|---|---|
| requested_volume | 入力または計算前のvolume | requested=… |
| normalized_volume | 銘柄仕様に合わせた後のvolume | normalized=… |
| volume_step | 対象symbolのstep | step=… |
| volume_min / max | 下限と上限 | min=… max=… |
| adjust reason | 丸め・補正理由 | floor_to_step、clamp_min、clamp_max |
注文数量を自動補正する場合でも、利用者が想定した値と実際の注文volumeが変わるため、ログや画面表示で分かるようにすることが重要です。
digits・point・tick size・tick value
銘柄仕様では、digits、point、tick size、tick valueも重要です。
価格の桁数、最小価格単位、tickあたりの価格変化、tickあたりの価値は、SL/TP距離、損益計算、表示、ログ、OrderCalcProfitの確認に関係します。
| 項目 | MQL5で確認する例 | 主な用途 |
|---|---|---|
| digits | SYMBOL_DIGITS | 価格表示、小数桁、NormalizeDouble |
| point | SYMBOL_POINT | 価格距離、points換算 |
| tick size | SYMBOL_TRADE_TICK_SIZE | 最小価格変動単位の確認 |
| tick value | SYMBOL_TRADE_TICK_VALUE | 損益計算や概算確認 |
| contract size | SYMBOL_TRADE_CONTRACT_SIZE | 銘柄仕様の把握 |
| calc mode | SYMBOL_TRADE_CALC_MODE | 証拠金・損益計算方式の確認 |
int digits = (int)SymbolInfoInteger(_Symbol, SYMBOL_DIGITS);
double point = SymbolInfoDouble(_Symbol, SYMBOL_POINT);
double tick_size = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE);
double tick_value = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE);
PrintFormat("DIAG/SYMBOL_PRICE_SPEC symbol=%s digits=%d point=%g tick_size=%g tick_value=%g",
_Symbol,
digits,
point,
tick_size,
tick_value);tick valueは銘柄、口座通貨、計算方式、環境によって確認が必要です。固定値として思い込まず、対象環境のログで確認してください。
価格取得や時系列データの基本は、MQL5時系列データ・価格取得完全ガイドも参考になります。
spreadの確認
spreadは、注文可否やEAの条件判定に影響することがあります。
EAによっては、spreadが一定以上の時に新規注文を止める設計があります。また、バックテストとリアル環境ではspread条件が異なる場合があります。
| 確認項目 | 確認する内容 | 注意点 |
|---|---|---|
| 現在spread | BidとAskの差 | points換算か価格差かを明確にする |
| SYMBOL_SPREAD | 端末が持つspread情報 | 環境によって確認方法を分ける |
| spread filter | EA側の許容条件 | riskやGATEログに残す |
| BT spread | テスター条件 | リアル環境と混同しない |
| 注文時spread | 実際の注文前のspread | 注文失敗や見送り理由の確認に使う |
spreadをログに残す場合は、価格差なのかpoints換算なのかを明確にしてください。単位が曖昧だと、あとから調査しにくくなります。
stops levelとfreeze level
SL/TPや注文変更が失敗する場合、stops levelとfreeze levelの確認が必要です。
stops levelは、現在価格からSL/TPや注文価格までに必要な最小距離の確認に関係します。freeze levelは、価格が近い状態で注文変更や取消が制限される場面の確認に関係します。
| 項目 | MQL5で確認する例 | 確認する場面 |
|---|---|---|
| stops level | SYMBOL_TRADE_STOPS_LEVEL | SL/TP距離、予約注文価格の距離 |
| freeze level | SYMBOL_TRADE_FREEZE_LEVEL | 注文変更・取消の制限確認 |
| point | SYMBOL_POINT | levelを価格距離へ換算する |
| Bid / Ask | SymbolInfoTickなど | 現在価格との距離確認 |
| digits | SYMBOL_DIGITS | 価格丸めの確認 |
int stops_level = (int)SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL);
int freeze_level = (int)SymbolInfoInteger(_Symbol, SYMBOL_TRADE_FREEZE_LEVEL);
double point = SymbolInfoDouble(_Symbol, SYMBOL_POINT);
PrintFormat("DIAG/SYMBOL_LEVEL symbol=%s stops_level=%d freeze_level=%d point=%g",
_Symbol,
stops_level,
freeze_level,
point);SL/TPや注文変更の失敗時は、価格距離、stops level、freeze level、digits、retcode、Journalログを合わせて確認してください。
OrderCalcMarginの基本
OrderCalcMarginは、指定した注文内容に対して必要証拠金を計算するために使います。
EAで注文前に証拠金の目安を確認したい場合、対象symbol、注文方向、volume、価格を指定して、必要証拠金を計算します。ただし、計算結果は環境や口座条件の確認材料であり、注文成功を保証するものではありません。
double margin = 0.0;
double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
bool ok = OrderCalcMargin(ORDER_TYPE_BUY, _Symbol, volume, ask, margin);
PrintFormat("DIAG/MARGIN_CHECK symbol=%s volume=%.4f ok=%s margin=%g last_error=%d",
_Symbol,
volume,
ok ? "Y" : "N",
margin,
GetLastError());この例は、必要証拠金を確認する最小例です。特定のvolumeや注文方向を推奨するものではありません。
| 確認項目 | 意味 | ログに残す例 |
|---|---|---|
| order type | BUY / SELLなど | type=… |
| symbol | 対象銘柄 | symbol=… |
| volume | 確認対象数量 | volume=… |
| price | 計算に使う価格 | price=… |
| margin | 必要証拠金の計算結果 | margin=… |
| GetLastError | 計算失敗時の確認 | error=… |
OrderCalcMarginで計算できても、その後の価格変化、取引条件、サーバー応答、EA側制御により注文が失敗する場合があります。executionログで結果を確認してください。
OrderCalcProfitの基本
OrderCalcProfitは、指定した注文種別、銘柄、volume、開始価格、終了価格から損益の計算結果を確認するために使います。
EA開発では、損益の概算確認、検証用ログ、risk表示、注文前確認の補助として使われる場合があります。ただし、将来の結果や運用成果を示すものではありません。
double profit = 0.0;
bool ok = OrderCalcProfit(ORDER_TYPE_BUY,
_Symbol,
volume,
price_open,
price_close,
profit);
PrintFormat("DIAG/PROFIT_CALC symbol=%s volume=%.4f ok=%s profit=%g last_error=%d",
_Symbol,
volume,
ok ? "Y" : "N",
profit,
GetLastError());この例は、損益計算関数の呼び出し方を示す最小例です。特定の価格差や利益結果を示すものではありません。
| 比較項目 | OrderCalcMargin | OrderCalcProfit |
|---|---|---|
| 主な目的 | 必要証拠金の計算 | 指定価格差での損益計算 |
| 主な入力 | 注文種別、symbol、volume、価格 | 注文種別、symbol、volume、開始価格、終了価格 |
| 使う場面 | 注文前の証拠金確認 | 損益目安、検証ログ、表示補助 |
| 注意点 | 注文成功を保証しない | 将来結果を保証しない |
| ログ項目 | margin、error、symbol、volume | profit、error、symbol、volume、価格 |
OrderCalcProfitを使う場合も、tick valueやcontract sizeを固定値として扱わず、銘柄仕様と計算結果をログで確認してください。
証拠金不足時に確認すること
証拠金不足による注文失敗は、単にvolumeが大きいことだけが原因とは限りません。
対象symbolの証拠金計算方式、口座条件、価格、既存ポジション、未約定注文、レバレッジ、通貨換算、EA側のrisk制御などが関係する場合があります。
| 確認項目 | 確認する内容 | 見るログ |
|---|---|---|
| OrderCalcMargin | 必要証拠金の計算結果 | MARGIN_CHECK |
| free margin | 利用可能証拠金 | ACCOUNT_INFO |
| 既存ポジション | 保有状態と合算条件 | POSITION_SCAN |
| 未約定注文 | 予約注文の有無 | ORDER_SCAN |
| volume | 注文数量とstep確認 | VOLUME_CHECK |
| calc mode | 銘柄の計算方式 | SYMBOL_SPEC |
| retcode | サーバー側の結果 | EXEC_RESULT |
注文失敗時は、証拠金だけでなく、volume、trade mode、retcode、Journalログ、EA側riskログを合わせて確認してください。
TRADE_RETCODE_INVALID_VOLUMEの確認
TRADE_RETCODE_INVALID_VOLUMEは、注文数量が無効な場合に確認対象となる代表的なretcodeです。
この場合は、volumeが最小値未満、最大値超過、volume step不一致、正規化処理の不備、計算結果の丸め誤差などを確認します。
| 確認項目 | 内容 | ログに残すこと |
|---|---|---|
| requested volume | EAが計算した元のvolume | requested=… |
| normalized volume | stepに合わせた後のvolume | normalized=… |
| volume min / max | 銘柄仕様の下限・上限 | min=… max=… |
| volume step | 注文数量の刻み | step=… |
| 丸め方針 | 切り捨て、四捨五入、補正なしなど | adjust=… |
| retcode | 注文結果コード | retcode=… |
volume関連エラーでは、注文直前の値をログに残すことが重要です。input値だけでなく、EA内部で補正した後の値も確認してください。
TRADE_RETCODE_NO_MONEYの確認
TRADE_RETCODE_NO_MONEYは、必要証拠金に対して余力が不足している場合に確認対象となるretcodeです。
この場合は、OrderCalcMarginの結果、free margin、既存ポジション、未約定注文、volume、対象symbolの計算方式、口座条件を確認します。
| 確認項目 | 内容 | 注意点 |
|---|---|---|
| 必要証拠金 | OrderCalcMarginの結果 | 計算失敗していないか確認する |
| free margin | 利用可能な証拠金 | 注文直前の値を確認する |
| volume | 注文数量 | step補正後の値を見る |
| 既存ポジション | 保有中のポジション | 他EAや他ロジックも確認する |
| 未約定注文 | 予約注文 | 必要証拠金に影響する場合がある |
| retcode | サーバー側応答 | Journalログと照合する |
証拠金不足時に、EAが自動でvolumeを変更する設計にするか、注文を見送る設計にするかは仕様として明確にしてください。
TRADE_RETCODE_INVALID_STOPSの確認
TRADE_RETCODE_INVALID_STOPSは、SL/TPや注文価格が銘柄仕様に合っていない場合に確認対象となるretcodeです。
この場合は、現在価格からSL/TPまでの距離、stops level、freeze level、digits、point、価格丸め、注文方向を確認します。
| 確認項目 | 確認する内容 | ログに残すこと |
|---|---|---|
| 注文方向 | BUY / SELL | direction=… |
| Bid / Ask | 現在価格 | bid=… ask=… |
| SL / TP | 指定した保護価格 | sl=… tp=… |
| 価格距離 | 現在価格との差 | distance_points=… |
| stops level | 必要な最小距離 | stops_level=… |
| freeze level | 変更制限範囲 | freeze_level=… |
| digits / point | 価格丸め | digits=… point=… |
SL/TPの距離は、価格差なのかpoints換算なのかを明確にしてください。単位が混在すると、調査や修正が難しくなります。
ブローカー・銘柄差で起きる問題
同じEAでも、ブローカー、口座タイプ、銘柄名、サフィックス、digits、volume step、tick value、stops level、trade modeが異なると、挙動が変わる場合があります。
そのため、EA開発や不具合調査では、対象環境の銘柄仕様ログを確認することが重要です。
| 差が出る項目 | 起きやすい問題 | 確認方法 |
|---|---|---|
| 銘柄名・サフィックス | symbolが一致せず注文や価格取得に失敗する | チャート左上とログで確認 |
| digits / point | SL/TP距離や表示がずれる | SYMBOL_DIGITS、SYMBOL_POINT |
| volume step | ロット不正になる | SYMBOL_VOLUME_STEP |
| tick value | 損益計算の見え方が変わる | SYMBOL_TRADE_TICK_VALUE |
| stops level | SL/TPや注文変更が失敗する | SYMBOL_TRADE_STOPS_LEVEL |
| trade mode | 注文できない状態がある | SYMBOL_TRADE_MODE |
| 口座方式 | 複数ポジション管理が変わる | Hedging / Nettingの確認 |
ブローカー差や銘柄差は、よくある不具合原因です。特定環境の値を固定前提にせず、EA起動時に銘柄仕様をログへ出せるようにすると確認しやすくなります。
固定のロット値を本文で提示しない理由
この記事では、特定のロット値を提示しません。
理由は、ロットの扱いが、口座資金、銘柄仕様、volume step、証拠金、EA仕様、保有数、許容条件、利用者の目的によって変わるためです。技術記事として扱うべきなのは、特定値の提示ではなく、EAが銘柄仕様に合ったvolumeを扱えているか、注文前後のログで確認できるかです。
| 書かないこと | 代わりに確認すること |
|---|---|
| 特定のロット値 | SYMBOL_VOLUME_MIN / MAX / STEP |
| 特定銘柄の利用誘導 | 対象symbolの銘柄仕様ログ |
| 損益結果の保証 | OrderCalcProfitの計算条件 |
| 証拠金不足を避けられるという断定 | OrderCalcMarginとfree marginの確認 |
| SL/TP距離の固定値 | stops level、freeze level、point、digitsの確認 |
EA開発や不具合調査では、入力値、補正後volume、銘柄仕様、注文結果、retcodeをログで追える状態にすることが重要です。
EAに銘柄仕様ログを入れる理由
EA起動時や注文前に銘柄仕様ログを出しておくと、環境差による問題を確認しやすくなります。
特に、配布後サポート、開発依頼、不具合調査、バックテストとリアル環境の差分確認では、銘柄仕様ログがあるかどうかで原因切り分けの速度が変わります。
| ログ項目 | 確認する理由 | 例 |
|---|---|---|
| symbol | 対象銘柄を特定する | symbol=… |
| digits / point | 価格桁数と距離を確認する | digits=… point=… |
| volume min / max / step | 注文数量条件を確認する | min=… max=… step=… |
| tick size / tick value | 価格変化と価値を確認する | tick_size=… tick_value=… |
| stops / freeze | SL/TPや変更制限を確認する | stops=… freeze=… |
| trade mode | 取引可能状態を確認する | trade_mode=… |
| calc mode | 証拠金・損益計算方式を確認する | calc_mode=… |
ログ設計や不具合調査の進め方は、MQL5デバッグ・ログファースト開発完全ガイドも参考になります。
開発依頼前に確認すること
ロット不正、証拠金不足、SL/TP不正、注文エラー、バックテストとリアル環境の差分を相談する場合は、原因確認に必要な情報を整理してください。
単に「注文できない」と伝えるだけでは、volume、銘柄仕様、証拠金、stops level、retcode、EA側risk制御のどこで止まっているのか分かりません。
| 整理する情報 | 内容 | 注意点 |
|---|---|---|
| EA名・バージョン | 対象特定 | 旧版と混在しないようにする |
| 対象symbol | 銘柄名 | サフィックス込みで記録する |
| setファイル | input設定 | 認証情報やURLがないか確認する |
| 銘柄仕様ログ | volume、tick、stops、trade modeなど | INITログやSYMBOL_SPECログを保存 |
| 注文前ログ | requested volume、normalized volume、margin | 注文直前の値を確認する |
| retcode | 注文結果コード | EXEC_RESULTログを保存 |
| Expertsログ | EA内部状態 | 発生前後を含める |
| Journalログ | 端末側・サーバー側情報 | 注文失敗時は重要 |
| スクリーンショット | 画面状態 | 口座番号や個人情報を隠す |
開発依頼前の資料整理は、MT5開発依頼前に用意する資料まとめも確認してください。
送ってはいけない情報
銘柄仕様や注文エラーを相談する場合でも、機密情報はそのまま送らないでください。
- 口座番号の全桁
- 投資家パスワード
- マスターパスワード
- Webhook URLの実値
- GAS URLの実値
- APIキー
- 認証トークン
- 外部サービスの秘密情報
- 個人情報
- 第三者の個人情報が入ったログ
setファイルやログには、認証情報、外部連携URL、口座情報が含まれる場合があります。送る前に必ずマスクしてください。
MQL5ロット・証拠金・銘柄仕様確認チェック表
- □ 対象symbolをサフィックス込みで確認した
- □ SYMBOL_VOLUME_MINを確認した
- □ SYMBOL_VOLUME_MAXを確認した
- □ SYMBOL_VOLUME_STEPを確認した
- □ requested volumeとnormalized volumeをログに残した
- □ digits、point、tick size、tick valueを確認した
- □ spreadの単位を確認した
- □ stops levelとfreeze levelを確認した
- □ OrderCalcMarginの結果を確認した
- □ OrderCalcProfitを使う場合は計算条件をログに残した
- □ INVALID_VOLUME、NO_MONEY、INVALID_STOPSの確認項目を整理した
- □ ブローカー・口座・銘柄差を固定前提にしていない
- □ ExpertsログとJournalログを保存した
- □ 口座番号や認証情報をマスクした
次に読む技術講座
この講座とあわせて確認すると、MT5・MQL5開発、検証、不具合調査の流れを整理しやすくなります。
| No | 講座 | 確認できること |
|---|---|---|
| LEARN-003 | MT5検証・運用環境ガイド | 検証・運用環境と銘柄名を確認する |
| LEARN-007 | MQL5注文・ポジション・履歴管理完全ガイド | ポジション・注文管理を確認する |
| LEARN-010 | MQL5時系列データ・価格取得完全ガイド | 価格取得とSymbolInfoを確認する |
| LEARN-016 | MQL5標準ライブラリ・CTrade完全ガイド | CTradeと発注処理の確認へ進む |
| LEARN-021 | MQL5マルチシンボル・マルチタイムフレーム完全ガイド | 複数銘柄時の仕様確認へ進む |
次に確認するページ
技術講座を確認した後、導入・商品確認・開発相談・不具合報告へ進む場合は、以下のページも確認してください。
| ページ | 確認できること |
|---|---|
| 技術講座一覧 | MT5・MQL5・EA開発に関する技術講座を順番に確認できます。 |
| 導入ガイド | EA、インジケーター、補助ツールを導入する前の確認事項を整理できます。 |
| 商品一覧 | EAファンクラブで扱う補助ツール、インジケーター、コピーEAなどを確認できます。 |
| 開発代行ページ | EA、インジケーター、補助ツールの新規作成・改修相談を確認できます。 |
| 不具合報告・サポート依頼 | ログ、スクリーンショット、再現手順を整理して相談する場合に確認できます。 |
よくある質問
ロットの固定値は本文で提示しますか?
提示しません。ロットは口座条件、銘柄仕様、volume step、証拠金、EA仕様、利用目的によって確認項目が変わります。この記事では特定値ではなく、銘柄仕様と注文前ログの確認方法を扱います。
volume stepとは何ですか?
volume stepは、注文数量の刻みです。EAで計算したvolumeがstepに合っていない場合、注文数量が無効として扱われる場合があります。SYMBOL_VOLUME_STEPを確認してください。
ロットが無効というエラーでは何を確認しますか?
requested volume、normalized volume、SYMBOL_VOLUME_MIN、SYMBOL_VOLUME_MAX、SYMBOL_VOLUME_STEP、丸め方針、TRADE_RETCODE_INVALID_VOLUME、Journalログを確認します。
証拠金不足エラーはロットだけが原因ですか?
ロットだけとは限りません。OrderCalcMargin、free margin、既存ポジション、未約定注文、銘柄の計算方式、口座条件、サーバー応答を確認する必要があります。
tick valueは固定ですか?
固定前提にしない方が安全です。銘柄、口座通貨、計算方式、環境によって確認が必要です。EA起動時や注文前の銘柄仕様ログで確認してください。
stops levelとは何ですか?
stops levelは、現在価格からSL/TPや注文価格までに必要な最小距離の確認に関係する銘柄仕様です。SL/TP不正や注文変更失敗時に確認します。
バックテストとリアルで銘柄仕様が違うことはありますか?
あります。テスト環境、ブローカー、口座タイプ、銘柄名、サフィックス、spread、tick value、stops levelなどが異なる場合があります。条件をログで確認してください。
EAに銘柄仕様ログは必要ですか?
不具合調査や販売後サポートを考えると有効です。symbol、digits、point、volume min / max / step、tick value、stops level、freeze level、trade modeをログで確認できると原因切り分けがしやすくなります。
OrderCalcMarginで計算できれば注文は成功しますか?
成功を保証するものではありません。OrderCalcMarginは必要証拠金の確認材料です。実際の注文では、価格変化、取引条件、サーバー応答、volume、SL/TP、EA側制御も確認してください。
SL/TPが無効な時は何を見ますか?
Bid / Ask、注文方向、SL、TP、価格距離、stops level、freeze level、digits、point、TRADE_RETCODE_INVALID_STOPS、Journalログを確認してください。
まとめ
MQL5でEAの注文処理を安定して確認するには、ロット、証拠金、銘柄仕様、SL/TP距離、retcode、Expertsログ、Journalログを分けて見ることが重要です。
volumeは、SYMBOL_VOLUME_MIN、SYMBOL_VOLUME_MAX、SYMBOL_VOLUME_STEPに合っている必要があります。EA内部では、入力値と補正後volumeを分けてログに残すと、不具合調査がしやすくなります。
OrderCalcMarginは必要証拠金、OrderCalcProfitは指定条件での損益計算を確認するために使えます。ただし、どちらも注文成功や将来結果を保証するものではありません。
SL/TPや注文変更が失敗する場合は、stops level、freeze level、digits、point、現在価格との距離を確認してください。ブローカーや銘柄差を固定前提にせず、対象環境の銘柄仕様ログを残すことが重要です。
学習内容を確認しても整理が難しい場合は、EA名、バージョン、setファイル、Expertsログ、Journalログ、発生時刻、スクリーンショットを整理したうえで相談してください。

