MT5のZigZagをCSVに出力する方法|未確定点に注意

MT5のZigZagが示す高値・安値は、MQL5のiCustom()FileWrite()を組み合わせればCSVに書き出せます。ただし、そのままでは検証データとして不十分な場合があります。ZigZagは直近の高値・安値が後から書き換わる「後付けの指標」であり、未確定の点を含めたまま検証に使うと、結果が実際の運用と食い違う原因になります。

この記事では、ZigZagの値をCSVに出力する基本的な考え方と、見落とされがちな注意点を、実際にMQL5でツールを開発した経験をもとに解説します。

なぜZigZagをCSVに出したくなるのか

ZigZagはチャート上で高値・安値を視覚的に把握するには便利ですが、複数の時間足を横断して検証したい場合や、Excel・Pythonで統計的に分析したい場合、画面を見ながら値を手で転記する作業が発生します。

MT5チャートにZigZagを表示し、Peak(山)とBottom(谷)を確認できる状態

M5・M15・H1・H4といった時間足を1つずつ開いて直近のZigZagの位置を確認し、価格と時刻をノートやExcelに書き写す。この作業は時間がかかるうえ、入力ミスや見間違いも起きやすくなります。

MT5でZigZagの値を取得してCSVに書き出す基本的な考え方

MQL5では、標準のZigZagインジケーターの値をiCustom()で呼び出し、CopyBuffer()でバッファの値を取得できます。取得した値をFileOpen()でCSVモードのファイルを開き、FileWrite()で1行ずつ書き出す、という流れです。

  • iCustom()でZigZagインジケーターのハンドルを取得する
  • CopyBuffer()で該当するバッファの値を配列にコピーする
  • 値が0でない(=ZigZagの点が存在する)バーだけを抽出する
  • FileWrite()で時刻・価格などをCSVの1行として書き出す

ここまでは一般的なMQL5のファイル操作の応用であり、特別な難しさはありません。

見落とされがちな罠:ZigZagは「後付け」で描画される

ZigZagには、CSV化する上で必ず理解しておく必要がある性質があります。ZigZagは完全に後付けの指標であり、高値・安値は「確定した後」にしか描かれません。直近のローソク足付近にあるZigZagの点は、その後の値動き次第で位置が変わったり、消えたりすることがあります。

これは、CSVに出力したデータをそのまま検証や統計処理に使う場合に問題になります。出力した時点では「山」として記録されていた点が、翌日には別の位置に移動している、といったことが起こり得るためです。特にCSVの末尾(直近のデータ)ほど、この影響を受けやすくなります。

この特性を踏まえると、CSVに出力する際は「まだ確定していない可能性がある直近の点」を除外するか、少なくとも別扱いにできる仕組みが必要です。

自作する場合につまずきやすい点

実際にMQL5でZigZagのCSV出力ツールを開発した経験から、特につまずきやすい点を3つ挙げます。

  • 未確定点の判定。 どこまでを「確定した点」として扱うかの線引きが曖昧だと、出力するたびに末尾のデータが変わってしまいます
  • 複数時間足への対応。 M5・M15・H1・H4を横断して出力しようとすると、時間足ごとにハンドルを取得し直す必要があり、コードが煩雑になりがちです
  • バーシフトと時刻の対応。 CSVに「何本前の足か」と「実際の時刻」の両方を残しておかないと、後から見返したときにデータの位置関係が分かりにくくなります

すでに動くものを使いたい場合

自分で組む時間が取れない場合、上記の考え方をすでに実装したツールを使う選択肢もあります。当サイトで配布している「ZigzagColor_csv」は、MT5チャート上にZigZagを表示しながら、ボタン操作で複数時間足のPeak(山)・Bottom(谷)をCSV出力できるインジケーターです。

初期設定ではM5・M15・H1・H4の直近20件ずつを、symbol・timeframe・zigzag_setting(使用したDepth/Deviation/Backstepの設定値)・seq・type・time・bar_shift・price・open・high・low・close(該当バーの四本値)の列でCSV出力します。保存先はMT5データフォルダ内のMQL5\Files\ZigZagExportsです。四本値まで含まれているため、Excel上でZigZagの点だけでなく、その足の値動き自体も併せて確認できます。

ZigzagColor_csvが出力したCSVファイルをExcelで開いた画面

この記事で説明した「未確定点の罠」に対しては、ExportIncludeUnconfirmedという設定項目が用意されており、初期値はfalse(未確定点を除外する)になっています。安定した検証データとして使う場合は、この初期設定のまま利用することを推奨します。

ZigzagColor_csvの詳細を見る

このツールは売買注文・決済・ポジション管理は行いません。チャート分析とCSV出力を補助するものであり、利益や勝率を保証するものではありません。ZigZagの値そのものが後から変わりうる性質を持つ点も含め、検証データの一つとしてご活用ください。

関連記事