手作業の検証にできること・できないこと
検証コース第2回で学んだTradingViewのバーリプレイは、過去チャートを1本ずつ進めながら「自分ならここで入る、ここで撤退する」を手で確かめる方法です。 これは相場の感覚をつかむのに最適で、初心者が最初にやるべき検証です。値動きの生々しさ、含み損に耐える感覚は、手で1本ずつ送らないと身につきません。
ただし、手作業には次の3つの限界があります。手法をいくつも比べたり、10年分を検証しようとすると、必ずぶつかります。
- 時間:10年分のチャートを1本ずつ送るのは非現実的です。1つの手法を確かめるだけで何時間もかかり、パラメータを変えて何通りも試すのはほぼ不可能です。
- 正確さ:手で送っていると、無意識に「この先どうなるか」を知った状態で判断してしまいます(先読み)。また、集中が切れると同じルールでも判断がぶれます。
- 記録:何通り試したか、勝率がいくつだったかを、手作業で正確に数え続けるのは大変です。第3回で学んだ「試行回数を数える」が、手作業だと崩れやすい。
コードにすると何が変わるか
検証をコードにするとは、「入る条件・撤退する条件」を、あいまいさのない文章(プログラム)に書き下すことです。 いったん書けば、コンピュータが過去データを最初から最後まで、同じ精度で自動的に処理します。
コードにすることで、手作業の3つの限界がそれぞれ解決します。
- 速い:10年分でも数秒で処理できます。パラメータを変えた何通りもの検証を、まとめて回せます。
- ぶれない:書いたルールをそのまま適用するので、判断が毎回同じです。先読みも、コードの組み方に気をつければ防げます(この点は各実装回で扱います)。
- 記録が残る:トレード数・勝率・累積リターンなどが自動で出ます。第3回で強調した「何通り試したか」を、正確に数えられます。
コードの限界:書いたとおりに動くだけ
ここで、コード検証への過信を先に潰しておきます。コードは魔法ではありません。あなたが書いたとおりに動くだけです。
ルールの考え方が間違っていれば、コードはその間違いを忠実に、しかも高速に実行します。 むしろ怖いのは、コードが出す「きれいな数字」を見て、正しさを検証した気になってしまうことです。 第3回の過剰最適化は、コードを使うと加速します。何百通りものパラメータを一瞬で試せてしまうので、偶然だけで好成績の1つを引く確率が跳ね上がるからです。 コードは検証を速くする道具であって、良し悪しを判断してくれる道具ではありません。何通り試したかを数える責任は、これまでどおり自分にあります。
だから、このコースで扱うコードはできるだけ短く、意味が読める形にとどめます。長くて複雑なコードは、どこで間違えているか自分でも分からなくなり、結局は信頼できません。 「短く書いて、結果を疑いながら読む」。これが手作業のときと変わらない基本姿勢です。
なぜ3つの環境で書くのか
このコースの一番の特徴は、1つの同じ戦略を MQL5・Pine Script・Python の3つで実装して、結果を突き合わせることです。なぜ3つも書くのか、目的をはっきりさせておきます。
- MQL5:MetaTrader 5 で動く言語。実際に自動売買(EA)として口座で動かせるのが強み。FX業者のデータをそのまま使えます。
- Pine Script:TradingView 上で動く言語。チャートに重ねて検証結果を目で見られ、環境構築がほぼ不要。手軽さが最大の利点です。
- Python:汎用のプログラミング言語。データを自由に加工でき、株価指数・仮想通貨など何のデータでも扱えます。分析の柔軟さが強み。
重要なのは、同じルールを書いても、3つは少しずつ違う結果を出すということです。使うデータが違い、約定のタイミングの決まりが違い、手数料の扱いが違うからです。 「どれが正解か」ではなく、環境が変われば結果もぶれる、という事実そのものを知ることが、検証結果を鵜呑みにしない態度につながります。最終回(第10回)で、このズレの正体を1つずつ分解します。
このコースの進み方
全10回を、無理なく積み上がる順番に並べています。プログラミングの網羅的な文法解説はしません。1つの戦略を動かすのに必要な最小限だけを扱います。
- 第2回:MT5の基礎(インストール・デモ口座・ストラテジーテスター)
- 第3〜5回:MQL5・Pine・Python それぞれの、この戦略が読める程度の最小限
- 第6回:検証用データの入手先(どこから正しいデータを持ってくるか)
- 第7〜9回:実装編。同じ戦略を3環境で1つずつ書く
- 第10回:3つの結果を並べて、なぜズレるのかを考える(このコースで最も価値の高い回)
題材にする戦略は、「月末に株価指数を買い、翌月初に手放す」という有名な季節性(ターン・オブ・ザ・マンス)です。 ルールがごく単純で、プログラムの練習にちょうどよく、しかも自分のエッジ探しには踏み込まない公知の題材なので選びました。戦略の中身の良し悪しではなく、実装のやり方を学ぶための練習台だと考えてください。
自動化は曖昧な考えを正しくしてくれません。先に検証可能な仮説、 比較対象、累計試行回数NとDSRを決めます。 コードは、その仕様を再現する道具です。
チェックリスト
次の記事に進む前に、以下が自分の言葉で説明できるか確認してください。
- 手作業の検証の3つの限界(時間・正確さ・記録)
- コードにすると何が解決するか
- コードは「書いたとおりに動くだけ」で、過剰最適化はむしろ加速すること
- MQL5・Pine・Python それぞれの強み
- 3環境で書く目的は「結果がぶれる事実を知る」こと
ミニテスト
最後に3問だけ確認です。不正解なら別の選択肢を選び直せます。正解すると解説が表示されます。
Q1. 手作業(バーリプレイ)の検証の限界として、本文が挙げていないのは?
手作業はむしろ相場の感覚をつかむのに最適で、初心者が最初にやるべき検証です。限界は時間・正確さ・記録の3つです。
Q2. コード検証について、本文の注意点として正しいのは?
何百通りものパラメータを一瞬で試せてしまうため、偶然だけで好成績の1つを引く確率が跳ね上がります。何通り試したかを数える責任は、これまでどおり自分にあります。
Q3. このコースが同じ戦略を3つの環境で書く、一番の目的は?
使うデータ・約定タイミング・手数料の扱いが違うため、同じルールでも結果はずれます。「どれが正解か」ではなく、ぶれる事実を知ることが、結果を鵜呑みにしない態度につながります。