>_ SYSTEM_TIME: SUNDAY_LOG_DUMP
今は月曜日の早朝。新たな1週間(ループ)が始まる前に、先週のシステム開発の軌跡をログとしてダンプ(出力)しておきます。
先週のリソースはすべて、**「自分のEAが、本当に自分が理想とするロジック通りにトレードできているか」**を検証するための、専用分析ツールの開発に全振りしました。 事の発端は、EAのパラメータを少し変更しただけでバックテストの結果が大きく変動し、「システムが私の意図したロジック通りに動いていないのではないか」という疑念(バグの予感)が生じたからです。
相場という不確実な世界で月利10%を安定錬成するには、内部のブラックボックス化を許容してはなりません。システムの思考プロセスを完全に可視化する必要がありました。
>_ 1. MQL5側のアーキテクチャ構築(CSV出力のクラス化)
まずは、EA本体から詳細なログを出力するロジックを実装しました。
単にデータを書き出すだけでは、システムとして美しくありません。将来的に、他のEA開発者向けにこの分析ツールをリリース(提供)することも見据え、CSV出力の処理は完全に**「クラス化」**しています。
さらに、EA本体のソースコードを無駄に肥大化させないため、CSV出力クラスへデータを渡す「中継器」の役割を果たす専用クラスを作成し、EAからはそれを呼び出すだけのスマートな構造(カプセル化)にしました。 分析ツール側との連携をスムーズにするため、出力データの接頭辞には「描画パターン(MARKERやLINEなど)」を、接尾辞には「時間足(H4やM15など)」を付与し、極めて汎用性の高いデータストリームを構築しています。

>_ 2. Pythonでの分析ツール開発と「RAY」の壁
次に取り組んだのが、Pythonを用いた分析ツールの作成です。
初期プロトタイプでは、描画ライブラリに「Plotly」を採用してみました。しかし、相場の膨大なデータ数を処理させるとシステムが重くなりすぎ、実用に耐えませんでした。 私が目指すのは「TradingViewのような軽快な操作性」です。そこで即座にアーキテクチャを見直し、描画エンジンを**「Lightweight Charts」**へとシフトさせました。
ここで直面した最大の課題が、**「RAY(波形)」**という描画パターンの処理です。 RAYは波形を出力するための描画パターンですが、データ構造として「波形頂点の時間と価格」を "|"(パイプ)で区切った1つの文字列データとして保持しています。 これをPython側で分解(パース)した際、時間データが単なる文字列型になってしまい、Lightweight Chartsのエンジンが認識できる正しい時間データへと変換する処理の実装に苦戦を強いられました。

さらに開発を進める中で、予期せぬノイズ(異常値)による深刻なシステムエラーにも直面しました。 インプットされたログデータが異常値を持っていた場合、異常な長さの文字列が生成されてシステムが無限ループ(クラッシュ)に陥ったり、時間データが強制的にUNIXエポック(1970年)へと初期化されてしまうという致命的なバグです。
システム全体のフリーズ(思考停止)を防ぐため、ここでもEA本体と同様の「冷徹な防衛ロジック」をPython側にも組み込みました。 具体的には、読み込む文字列の上限を25文字に制限するサニタイズ(無害化)処理や、「2000年以降の妥当な時間データのみを通過させる」という厳格なタイムフィルターを追加しています。
これにより、相場からどれほどイレギュラーなログデータがインプットされても、決してフリーズすることのない極めて堅牢な可視化システムへと昇華させることができました。

>_ 3. 次のフェーズへ(GWの開発ブースト)
コードとの格闘の末、何とか実戦で使えるレベルのシステム(MVP)まで形にすることができました。
今週のタスクは明確です。完成したこの分析ツールをフル稼働させて「EA本体のロジックの改善」を行いながら、分析ツール自体のさらなるアップデート(機能拡張)を進めていきます。 いよいよ今週からゴールデンウィーク(GW)に突入します。本業というタスクが一時停止するこの期間は、自分のプロジェクトへリソースを100%割り当てられる最大のチャンスです。
10台のスーパーカーと究極のガレージハウス。 この物理的な野望を現実空間へデプロイするため、圧倒的なブーストをかけてコードをコンパイルしていきます。
>_ EXECUTE_NEXT_SEQUENCE...