Lサイン検証ツールと Lサイン・過去検証キットの干渉の整理
2026-11-07(同日 23:40 更新)/ 試験端末(XM MT4・デモ)と XM 実機で確認 / 根拠はソースコードとターミナルのログ
結論
- Lサイン本体と過去検証キットは、作りの上でほかのツールと干渉しやすい挙動を 2 つ持っている(2 章)。過去検証キットの銘柄が
LS_EURUSD なのは、長い過去データを持たせ、時間足ごとの 3 枚のオフラインチャートに 1 つで描くためと読める。本番の EURUSD に届かないのはその副作用(3 章)。
- 今回の検証ツールは、自分を貼ったチャートの、自分の名前のものにしか触らない作り。過去検証キットのような「別のチャートへの干渉」は起きない(4 章)。
- ただし Lサインの起動の待ち時間がギリギリなため、同じチャートに一緒に貼ると、MT4 の起動時に Lサインが止まることがある。お客さまには「使うあいだは Lサインを外し、検証ツールは 1 枚のチャートだけに貼る」と案内する(5・6 章)。
1登場するツール
| ツール | 中身 | 描く・動くチャート | 作り手 |
| Lサイン本体(L-series) | Core(EA・口座認証)と LS1〜LS8(サイン・パネル・ダウ・RR・ロット・ペイントなど) | EURUSD M15(本番の相場) | Lサインの作り手 |
| 過去検証キット(Retrospect) | 2004〜2025 年の過去サインを埋め込み、矢印で描く。3 枚のチャートのスクロールを連動 | カスタム銘柄 LS_EURUSD の M15・H1・H4(オフラインチャート) | 同じ作り手 |
| 検証ツール(L-series_Judge・今回) | 過去のサインを 1 本ずつ見て「入る/入らない」を答え、結果を CSV 1 枚に書く。口座認証は Lサインと同じ | 貼った 1 枚のチャートだけ | 今回追加 |
2Lサイン・過去検証キットにある 2 つの挙動の問題
2-1 過去検証キットは「別のチャート」に手を出す
Retrospect は、自分を貼ったチャートだけでなく、端末で開いているチャートを全部見て回り、銘柄名で選んだチャートに描いたり消したりする。
| 挙動 | ソース上の処理 | 普通の EURUSD で同じことをすると |
| 描くチャートを銘柄名で探す | ChartFirst/ChartNext で全チャートを回し、銘柄名が LS_EURUSD の M15・H1・H4 を選ぶ | 本番の Lサインのチャートにも 13,000 件の矢印を描いてしまう |
| 外すと「LS」で始まるものを全部消す | ObjectsDeleteAll(チャート, "LS") | 本番の Lサインのパネル(LS1〜LS8 の部品はどれも「LS」で始まる)まで消える |
| 本体と同じ名前のボタンを作る | 式の ON/OFF のボタン名が本体のパネルと同じ LS1_btn_0〜4 | ボタンが取り違えられる |
2-2 Lサイン本体の起動は「待ち時間がギリギリ」
LS1〜LS8 は、Core が口座認証のあとに置く隠しの印を探し、1 秒ごとに 5 回見て無ければ「エラー:口座認証できませんでした。強制終了します。」で自分を外す。一方、MT4 の起動時に Core が読み込まれてから起動し終えるまでには 4 秒前後かかる。
| Lサインだけを載せた回 | Core が読み込まれてから起動まで | 締め切り(約 5 秒)までの余裕 | 止まったインジ |
| 1 | 3.8 秒 | 約 1.2 秒 | 0 |
| 2 | 3.7 秒 | 約 1.3 秒 | 0 |
| 3 | 4.5 秒 | 約 0.5 秒 | 0 |
| 4 | 4.1 秒 | 約 0.9 秒 | 0 |
試験端末の Core は開発用(認証の問い合わせを省略する版)。本番の Core はサーバーへ問い合わせる分だけ起動が遅くなるので、余裕はさらに少ないはず。10 月にも「1 時間足に切り替えると『口座認証できませんでした』が出る」という記録があり、同じ原因の可能性がある。
3LS_EURUSD(過去チャート)を用意した経緯
2003 年からの長い過去データを持たせたい→ブローカーの EURUSD の名前だとサーバーの履歴で上書きされる → 別の名前 LS_EURUSD のオフラインチャート→オフラインチャートは時間足を切り替えられない → M15・H1・H4 の 3 枚→1 つの Retrospect で 3 枚に描き、スクロールも連動させる → 端末のチャートを銘柄名と時間足で探す作り
この理由を書いた資料は見つかっていない。上はソースの処理(3 つの時間足のチャートを探して描く・スクロールの連動)から読んだもの。全チャートを見て回るのは 3 枚に一度に描くためで、干渉を避けるためではない。銘柄名が違うので本番の EURUSD には届かずに済んでいる、という順番。普通の EURUSD で同じ作りにすると、2-1 の問題が本番のチャートで起きる。
| 項目 | LS_EURUSD(オフラインチャート) | XM の EURUSD |
| 足のある期間(M15) | 2003-05-05 〜 2026-02-18(約 57 万本) | 2022-07-25 〜 今(約 10 万本・最大バー数による) |
| 時刻の基準 | 同じ(重なる 88,502 本で、ずらさずに 93.5% が 1 pips 以内・LS_EURUSD が中央値 0.8 pips 高い) |
| 検証ツールのサインの建玉の足が無い数 | 0 件(期間内 13,392 件) | 8 件(年末年始の足が無い) |
| 銘柄が違うことの効果 | MT4 は同じ銘柄のインジケーターを 1 本の流れで処理する。銘柄が違えば処理の流れも別になる |
4検証ツールの作り(干渉しないための作り)
| 観点 | 過去検証キット(Retrospect) | 検証ツール |
| 描くチャート | 端末の全チャートから銘柄名で探して描く | 自分を貼ったチャートだけ(ほかのチャートを探す処理がない) |
| 消すもの | 「LS」で始まるもの全部 | 自分の名前(#CSJL_)で始まるものだけ |
| ボタンの名前 | Lサインと同じ LS1_btn_* を作る | LS1_btn_* は読むだけ(自分のチャートにあれば式の ON/OFF を見る)。作らない・変えない。1 秒ごとに 5 個を見るだけで重くならないので、機能は残す(Lサインを外したチャートでは何もせず、零式〜肆式を全部出す) |
| オブジェクトの名前 | — | サインの矢印・決着の線の名前は結果の CSV と同じ番号(例 #CSJL_arw_n12288)。日時を入れないので、オブジェクトリスト(Ctrl+B)を開いてもサインの日時は並ばない |
| Lサインの認証の印 | — | 触らない(隠すのは自分のチャートの未来の矢印・文字の印だけ) |
| 未来の矢印を隠す | — | 自分のチャートで、幕より右の矢印・文字の印を一時的に見えなくする(消さない・外すと戻す) |
| 口座認証 | なし | Lサインの Core と同じ確認先・同じ手順・同じ文言。通るまで起動しない |
| 端末全体で共有するもの | — | 進み具合(どこまで見たか)を端末全体で 1 つ保存。2 枚に貼ると取り合う → 「1 枚だけ」と案内 |
| 同じ銘柄の処理の流れ | LS_EURUSD なので本番と別 | 普通の EURUSD に貼ると、起動時の重い処理(13,000 件の読み込み・矢印)の間、別のチャートの Lサインが待たされる → 「使うあいだは Lサインを外す」と案内 |
5干渉の確認観点と結果
5-1 載せ方ごとの結果(MT4 の起動時・試験端末)
| 載せ方 | 回数 | Lサインが止まった回 | 検証ツール |
| Lサインだけ | 6 | 0 | — |
| Lサインと検証ツールを同じチャートに | 3 | 1(LS1〜LS8 のうち 7 本が外れた) | 認証が通って動く |
| Lサインのチャートと検証ツールのチャートを分けた(どちらも EURUSD M15) | 2 | 0(LS1〜LS8 の 8 本とも残った) | 認証が通って動く。オブジェクトも混ざらない(Lサイン 78 個・検証ツール 778 個) |
5-2 なぜ同じチャートで止まるのか(考えられる要因・未確定)
| 候補 | 中身 | 見立て |
| ① 検証ツールの読み込みが重い | ex4 が約 500 KB で 13,770 件のサインを配列で持つ。同じ銘柄の処理の流れが押し出され、Core の起動が締め切りを越える | 高い |
| ② 起動時の口座認証の通信 | 起動時に口座につながっていればその場でサーバーへ問い合わせ、その間ほかの処理を待たせる | 中(止まった回は、ツールの認証が Core より後だった) |
| ③ もともとのばらつき | Core の起動が毎回 0.5 秒ほど揺れ、たまたま遅い回に重なった | 低くない(Lサインだけの 6 回では起きていない) |
切り分け案: 認証なしのテスト用ビルドで同じチャートを 10 回/検証ツールの起動にかかった時間を回ごとに測る/載せ方ごとに 10 回ずつ流して割合を比べる。
5-3 オブジェクト・名前の確認(静的)
| 確認 | 方法 | 結果 |
| ほかのチャートに触る処理がないか | ソースで ChartFirst/ChartNext/他チャート ID への ObjectCreate/ObjectsDeleteAll を探す | 無い(すべて自分のチャート) |
| 消す範囲 | ソースの ObjectsDeleteAll を全部見る | 自分の名前で始まるものだけ |
| マウスを合わせたときに内部の名前が出ないか | チャートのオブジェクトとツールチップを全部書き出す | サインの印は「零式のサイン」など式の名前だけ。ほかは出さない |
| オブジェクトの名前に日時が入らないか | 同じ書き出しで、名前に PERIOD_ や日付(8 桁)が無いか数える | 778 個中 0(前は矢印・線の名前に「…_EURUSD_PERIOD_M15_20220817_2100」と日時が入っていた) |
| 画面・ログに日時や値段が出ないか(配布版) | パネルとエキスパートタブを見る | サイン・決着の行は「日時 式 売買」だけで値段なし。答えのたびのログ・現在地・エラーの日付は出さない |
5-4 LS_EURUSD に貼ったとき
| 確認 | 結果 |
| 起動・口座認証 | XM 実機で動く |
| サインの建玉の足が無い([E02]) | 足の抜けは 0 件。データが終わる 2026-02-18 より後の 378 件を [E02] に数えていたのは直した |
| 古い年まで振り返るには | チャートの最大バー数を 600,000 程度に上げて再起動(足りないと [E01]) |
| Retrospect との同居 | 同じチャートに貼らない(矢印が重なる) |
6お客さまへの案内(マニュアルに入れたこと)
| 案内 | 理由 |
| Lサインが貼られているチャートには貼らない | MT4 の起動時に Lサインが「口座認証できませんでした」で止まることがある(5-1) |
| 検証ツールを使うあいだは Lサインをチャートから外す(終わったら定型チャート「L-series」で戻す) | 別のチャートでも、同じ EURUSD だと検証ツールの重い処理で MT4 が重くなる(4 章の「同じ銘柄の処理の流れ」) |
| 検証ツールは 1 枚のチャートだけに貼る | 進み具合を端末全体で 1 つ保存しているので、2 枚以上だと混ざる |
| LS_EURUSD(過去検証キット)は案内しない | 想定外の使い方。全部の年を振り返らせる必要はなく、H1・H4 を横に開くと未来が見える(段 2 で対応) |
7まだ確かめていないこと・判断が要ること
| 項目 | 状態 |
| 本番の Core(サーバーに問い合わせる版)の横で、別のチャートに貼って動くか | 未(XM で確認) |
| 同じチャートで止まる原因の切り分け(5-2 の ①②③) | 未 |
| Lサイン本体の LS1〜LS8 の待ち時間(5 秒)を延ばすか | Lサインの作り手の判断(納品物の変更になる) |
| 過去検証キットが LS_EURUSD に分けた理由の裏付け(長いデータ・3 枚のオフラインチャート) | 作り手に確認(ここはソースからの推定) |
| LS_EURUSD で時間足を変えながら振り返る(H1・H4 にも未来の幕) | 段 2(ChartSync を L サイン用に写す)。v1.0 では LS_EURUSD 自体をマニュアルで案内しない |
出所: Lサイン・過去検証キットの納品ソース(L-series_0-Core/L-series_1〜8/L-series_Retrospect)、検証ツールのソース(judge-kit/mq4/CSJ4_JudgeBody.mqh・CSJ4_EngineCsv.mqh・CSJ4_Auth.mqh)、試験端末と XM 実機のエキスパートのログ(2026-11-07)、l_series_judge/RELEASE_CHECKLIST.md の 7・7.5 節。