概要

Print() 関数は MQL5 プログラムが何をしているかを観察するための最も単純な方法です。ターミナルログにメッセージを書き込み、変数の値、実行順序、エラー状況を確認できます。出力は Experts タブ(Script/EAs/Indicators)に表示され、端末のログファイルにも記録されます。Print() を早期かつ頻繁に使うことが、信頼性の高いデバッグへの最短ルートです。

Ad

できるようになること

  • Print() を使ってメッセージおよび変数値を表示する。
  • 数値、時刻、文字列を読みやすいログ出力形式に整形する。
  • 通常の実行時メッセージと警告またはエラーを区別する。
  • Experts および Journal タブでプログラムフローを追跡する。

コード例


//+------------------------------------------------------------------+
//|                                                   PrintExample.mq5 |
//+------------------------------------------------------------------+
#property version "1.00"
#property strict

void OnStart()
  {
   // 1) Plain text
   Print("Starting PrintExample");

   // 2) Variables
   string sym = Symbol();
   double price = SymbolInfoDouble(sym, SYMBOL_BID);
   int count = 3;
   Print("Symbol=", sym, "  Bid=", DoubleToString(price, _Digits), "  Count=", count);

   // 3) Concatenation vs multiple args
   Print("Concat: " + sym + " price=" + DoubleToString(price, _Digits));
   Print("Multi-args: ", sym, " price=", DoubleToString(price, _Digits));

   // 4) Time formatting
   datetime now = TimeCurrent();
   Print("Server time: ", TimeToString(now, TIME_DATE|TIME_SECONDS));

   // 5) Simple calculation and formatting
   double lots = 0.10;
   double step = 0.01;
   double next_lots = NormalizeDouble(lots + step, 2);
   Print(StringFormat("Lots %.2f -> %.2f (step=%.2f)", lots, next_lots, step));

   // 6) Guarded access example
   double val[];
   if(CopyClose(sym, PERIOD_M1, 0, 5, val) == 5)
      Print("Latest M1 close[0] = ", DoubleToString(val[0], _Digits));
   else
      Print("Warning: CopyClose failed for ", sym);

   Print("PrintExample finished");
  }
Ad

実行手順

  1. MetaEditorFile → New → Script を開き、名前を PrintExample とする。
  2. 上記コードを貼り付け、F7 を押してコンパイル。
  3. MetaTrader 5 で PrintExample を任意のチャートにドラッグする。
  4. Experts タブを開き、各行が順番に表示されることを確認する。端末全体のメッセージは Journal タブを使用する。
  5. 期待した値が表示されない場合は、シンボルおよび接続状況を確認し、再実行する。

重要ポイント

Print() は主要なトレース手段です。入力、途中値、重要な分岐判断をログに残します。メッセージは短く、統一し、検索しやすくすることでデバッグ速度が上がります。

Ad

次のセクション

→ 次へ: シンボル名を取得する