技術講座

MQL5ロット・証拠金・銘柄仕様完全ガイド|volume step・tick value・stops levelの確認

EAファンクラブ

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の技術学習記事です。投資判断、売買タイミング、利益や結果の保証、特定のロット値、特定銘柄の利用誘導、特定ブローカー誘導を目的とした内容ではありません。

この記事で扱う範囲

この記事で扱うのは、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で確認する例確認する理由
最小volumeSYMBOL_VOLUME_MINこれ未満の数量は注文できない場合がある
最大volumeSYMBOL_VOLUME_MAXこれを超える数量は注文できない場合がある
volume stepSYMBOL_VOLUME_STEP注文数量の刻みに合わせるため
volume limitSYMBOL_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入力または計算前のvolumerequested=…
normalized_volume銘柄仕様に合わせた後のvolumenormalized=…
volume_step対象symbolのstepstep=…
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で確認する例主な用途
digitsSYMBOL_DIGITS価格表示、小数桁、NormalizeDouble
pointSYMBOL_POINT価格距離、points換算
tick sizeSYMBOL_TRADE_TICK_SIZE最小価格変動単位の確認
tick valueSYMBOL_TRADE_TICK_VALUE損益計算や概算確認
contract sizeSYMBOL_TRADE_CONTRACT_SIZE銘柄仕様の把握
calc modeSYMBOL_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条件が異なる場合があります。

確認項目確認する内容注意点
現在spreadBidとAskの差points換算か価格差かを明確にする
SYMBOL_SPREAD端末が持つspread情報環境によって確認方法を分ける
spread filterEA側の許容条件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 levelSYMBOL_TRADE_STOPS_LEVELSL/TP距離、予約注文価格の距離
freeze levelSYMBOL_TRADE_FREEZE_LEVEL注文変更・取消の制限確認
pointSYMBOL_POINTlevelを価格距離へ換算する
Bid / AskSymbolInfoTickなど現在価格との距離確認
digitsSYMBOL_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 typeBUY / 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());

この例は、損益計算関数の呼び出し方を示す最小例です。特定の価格差や利益結果を示すものではありません。

比較項目OrderCalcMarginOrderCalcProfit
主な目的必要証拠金の計算指定価格差での損益計算
主な入力注文種別、symbol、volume、価格注文種別、symbol、volume、開始価格、終了価格
使う場面注文前の証拠金確認損益目安、検証ログ、表示補助
注意点注文成功を保証しない将来結果を保証しない
ログ項目margin、error、symbol、volumeprofit、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 volumeEAが計算した元のvolumerequested=…
normalized volumestepに合わせた後のvolumenormalized=…
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 / SELLdirection=…
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 / pointSL/TP距離や表示がずれるSYMBOL_DIGITS、SYMBOL_POINT
volume stepロット不正になるSYMBOL_VOLUME_STEP
tick value損益計算の見え方が変わるSYMBOL_TRADE_TICK_VALUE
stops levelSL/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 / freezeSL/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-003MT5検証・運用環境ガイド検証・運用環境と銘柄名を確認する
LEARN-007MQL5注文・ポジション・履歴管理完全ガイドポジション・注文管理を確認する
LEARN-010MQL5時系列データ・価格取得完全ガイド価格取得とSymbolInfoを確認する
LEARN-016MQL5標準ライブラリ・CTrade完全ガイドCTradeと発注処理の確認へ進む
LEARN-021MQL5マルチシンボル・マルチタイムフレーム完全ガイド複数銘柄時の仕様確認へ進む

次に確認するページ

技術講座を確認した後、導入・商品確認・開発相談・不具合報告へ進む場合は、以下のページも確認してください。

ページ確認できること
技術講座一覧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ログ、発生時刻、スクリーンショットを整理したうえで相談してください。

MT4/MT5 技術講座へ戻る

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