ロンドン・ブレイクアウト戦略をPythonで再現!Claude Codeで特定時間帯を狙い撃つ方法

  • URLをコピーしました!

FXトレードを自動化しようと考えたとき、多くの人が最初につまずくのが「コードの書き方」と「正確な検証」です。

特に、特定の時間帯だけを狙い撃つロンドン・ブレイクアウト戦略は、日本時間と現地時間のズレがあるため、自力でプログラミングするのは意外と骨が折れます。

そこで活用したいのが、Anthropic(アンソロピック)が提供する最新のAIツール「Claude Code」です。ターミナル上で対話しながらコードを生成・実行できるこのエージェントツールを使えば、複雑なタイムゾーン計算やバックテストの実装も、驚くほどスムーズに進みます。この記事では、初心者でも迷わずにPythonで戦略を構築できる手順を詳しく解説します。

目次

ロンドン・ブレイクアウト戦略とは?

この章では、まず戦略の根幹となる仕組みを整理します。ロンドン・ブレイクアウトがなぜ世界中のトレーダーに愛用されているのか、その理由と狙うべき通貨ペア、そしてトレードの土台となる「東京時間の値動き」について正しく理解しましょう。

欧州市場の開始時に発生するトレンドを狙う

ロンドン市場は、世界でも最大級の取引量を誇るマーケットです。日本時間の夕方、この市場がオープンすると同時に、それまでの静かな値動き(東京時間)を打ち破るような強いトレンドが発生することがよくあります。この勢いに乗って利益を出すのが、ロンドン・ブレイクアウトの基本思想です。

具体的には、ロンドン市場が開く直前の数時間の高値と安値をチェックし、そこを抜けた方向にエントリーします。例えば、16時のオープン直後に高値を更新したら買い、安値を更新したら売り、というシンプルなルールです。複雑なインジケーターを使わなくても、市場の参加者が一気に増える「時間帯の力」を利用するため、根拠が明確で再現性が高いのが特徴です。

ただ、注意点もあります。市場開始直後は「ダマシ」と呼ばれる一時的な逆行も多いため、単純に抜けた瞬間に飛び乗ると痛い目を見ることがあります。これを防ぐために、あらかじめ決めた値幅(バッファ)を持たせるなどの工夫が必要です。

なぜGBP/USD(ポンドドル)が選ばれるのか

この戦略で最も推奨される通貨ペアは、間違いなくGBP/USD(ポンドドル)です。ロンドン市場の主役であるポンドは、この時間帯に最も激しく動くため、ブレイクアウトした際の利益幅を大きく取りやすいからです。

以下の表に、主要通貨ペアのロンドン時間における特徴をまとめました。

通貨ペアボラティリティ特徴
GBP/USD非常に高い伸び始めると一気に進むが、荒い動きも多い
EUR/USD高い素直なトレンドが出やすく、初心者でも扱いやすい
USD/JPY中程度ドルや円の力関係に左右され、欧州の勢いだけでは動かないことも
EUR/GBP低い欧州通貨同士のため、価格が均衡してレンジになりやすい

ポンドドルは「一度動き出すと止まらない」という性質がありますが、その分、損切りラインをしっかり設定しないと一気に資金を失うリスクもあります。まずはEUR/USDで練習し、慣れてきたらポンドに移行するというステップも賢い選択です。

東京時間のレンジを考える

ブレイクアウトの成否を分けるのは、その前段階である「東京時間の値動き」です。東京市場は比較的穏やかなレンジ相場になることが多く、この時間帯に溜まったエネルギーがロンドン市場で爆発します。

プロのトレーダーは、ロンドン市場開始前の数時間(例えば15時から16時など)の最高値と最安値を「基準のボックス」として捉えます。このボックスの幅が狭ければ狭いほど、ブレイクした後の勢いは強くなる傾向があります。逆に、東京時間ですでに大きく動いてしまっている日は、ロンドン市場では「材料出尽くし」となり、伸び悩むことが多いです。

実際のチャートを見るときは、以下のポイントを意識してみてください。

  • ボックスの幅が直近の平均より狭いか?
  • 重要な経済指標の発表が控えていないか?
  • 前日の終値から乖離しすぎていないか?

このように、単に「抜けたから買う」のではなく、前の時間帯の状態を観察することが、勝率を上げるための第一歩になります。

実装に必要なツールを揃えよう

戦略をコードに落とし込むためには、適切な道具が必要です。ここではPythonの環境構築から、今回の主役であるClaude Codeの導入までを順を追って説明します。

Python 3.xと仮想環境の準備

まずはPythonが動く環境を作りましょう。最新のライブラリを安定して動かすために、Python 3.10以降を使うのが理想的です。また、PC全体の環境を汚さないために「仮想環境(venv)」を作ることを強くおすすめします。

仮想環境を作ることで、プロジェクトごとに使うライブラリのバージョンを管理できるようになり、「他のアプリが動かなくなった」というトラブルを防げます。以下の手順で準備を進めましょう。

  1. プロジェクト用のフォルダを新規作成する
  2. ターミナルを開き、そのフォルダに移動する
  3. python -m venv venv と入力して実行する
  4. 作成された環境を有効化(Windowsなら .\venv\Scripts\activate)する

これで、自分だけの開発部屋が整いました。もしPythonのインストール自体がまだの方は、公式サイトからインストーラーをダウンロードし、「Add Python to PATH」にチェックを入れて進めてください。

Claude Codeをインストールする手順

Claude Codeは、Anthropicが開発した、ターミナル上で直接AIとやり取りしながらコードを書けるツールです。通常のブラウザ版と違い、あなたのPC内のファイルを読み取ったり、実際にプログラムを動かしてエラーを確認したりしてくれるのが最大の特徴です。

インストールにはNode.jsが必要になるため、事前に公式サイトからLTS版をインストールしておいてください。その後、以下のコマンドを打つだけで導入完了です。

npm install -g @anthropic-ai/claude-code

インストールが終わったら、ターミナルで claude と打ち込んでみてください。ログイン画面が表示され、設定が完了すれば、AIがあなたの専属エンジニアとして活動を開始します。最初は「何を頼めばいいかわからない」と感じるかもしれませんが、まずは「ロンドン・ブレイクアウト戦略を作りたい」と素直に話しかけるだけで十分です。

FXデータの取得に必要なライブラリ

Pythonでトレード戦略を立てる際、最も重要なのが「質の良いデータ」を手に入れることです。今回は、無料で手軽に使えるライブラリを組み合わせて使用します。

主に必要となるのは以下の3つです。

  • yfinance:Yahoo Financeから価格データを取得する
  • pandas:データを加工し、時間変換や高値の抽出を行う
  • matplotlib:チャートやバックテストの結果をグラフで表示する

これらは pip install yfinance pandas matplotlib という1つのコマンドでまとめてインストールできます。

特にpandasは、大量の価格データを「表形式」で扱うための非常に強力なツールです。これを使いこなせるようになると、数年分の日足データから一瞬で特定の時間帯だけを抜き出すといった操作ができるようになります。プログラミングが苦手な方でも、Claude Codeに「pandasを使って16時のデータだけ抜き出して」と頼めば、適切なコードを書いてくれるので安心してください。

Claude Codeで開発を効率化する準備

道具が揃ったら、いよいよ開発に入ります。Claude Codeを単なる「相談相手」ではなく「一緒にコードを書くパートナー」として扱うためのコツを紹介します。

ターミナルからClaude Codeを起動しよう

プロジェクトのフォルダでターミナルを開き、claude と入力して起動します。すると、対話形式のプロンプトが表示されます。ここで重要なのは、現在のフォルダ構成やファイルをClaudeが把握しているということです。

例えば、「新しいPythonファイルを作って、yfinanceでポンドドルのデータを取得する処理を書いて」と入力すると、Claudeは指示通りにファイルを作成し、コードを書き込みます。ブラウザからコピペする手間がないため、集中力を切らさずに作業を進められます。

もし、以前に作ったコードを修正したい場合は、「main.pyの5行目のロジックを修正して」と伝えるだけで、ピンポイントで書き換えてくれます。このスピード感こそが、AIエージェントを使う最大のメリットです。

開発ディレクトリの構成をAIに相談する

行き当たりばったりでコードを書き始めると、後で「どのファイルが何をしているか」がわからなくなりがちです。まずはClaudeに、プロジェクトの全体像をどうすべきか聞いてみましょう。

おすすめの構成は以下の通りです。

  • data/:取得したCSVデータを保存する場所
  • strategies/:売買ロジックを書くファイル
  • utils/:時間変換などの共通処理
  • main.py:すべてを繋げて実行するメインスクリプト

「これからFXのバックテストツールを作るので、おすすめのフォルダ構成を提案して、実際に作成して」と頼んでみてください。Claudeがディレクトリを一瞬で作り上げ、整理整頓された状態から開発をスタートできます。

プロジェクトのゴールを伝える

Claude Codeを賢く使うコツは、最初に「何を作りたいか」の定義をはっきりさせることです。曖昧な指示だと、AIも一般的な回答しか返せません。

具体的には、以下のような情報を最初に伝えるとスムーズです。

  1. ポンドドルの1分足を使ってバックテストしたい
  2. 15:00から16:00のレンジを基準にしたい
  3. 結果はグラフで可視化したい
  4. リスク管理(損切り)も含めたい

このようにゴールを伝えると、Claudeは逆算して必要な機能を提案してくれます。

「とりあえず動くものが欲しい」という気持ちもわかりますが、まずは「どんなルールで、どんな結果が得られたら成功か」をAIと合意しておくことで、後の手戻りが劇的に減ります。

手順1:特定の時間帯のデータを抽出する

ここからは具体的な実装ステップです。FXデータ特有の「時間の壁」を乗り越え、戦略の基準となる数値を算出していきます。

pandasでUTCから日本時間へ変換する方法

FXの価格データは、世界共通の「UTC(協定世界時)」で記録されていることがほとんどです。しかし、私たちの戦略は「日本時間の16時」といった具合に時間を指定するため、これを正しく変換する必要があります。

これを手動で計算しようとすると、サマータイムの有無などでミスが起きがちです。Pythonのpandasライブラリを使えば、数行で正確に変換できます。

import pandas as pd

# UTCとして読み込み、日本時間に変換する例
df['timestamp'] = pd.to_datetime(df['timestamp'])
df.set_index('timestamp', inplace=True)
df.index = df.index.tz_localize('UTC').tz_convert('Asia/Tokyo')

この処理を行うことで、データ上の「16:00」が正確に私たちのイメージする時間と一致します。この変換を忘れると、深夜にブレイクアウトを狙うような見当違いなプログラムになってしまうので、真っ先に確認すべきポイントです。

指定した1時間の高値・安値を自動取得する

基準となる「東京時間の終わり(15時〜16時)」の最高値と最安値を特定します。pandasの between_timeメソッドを使うと、特定の時間帯だけを切り出すのが非常に簡単です。

例えば、15:00から16:00までのデータだけを抽出し、その中の High 列の最大値と Low 列の最小値を見つければ、それがその日の「基準レンジ」になります。

# 15時から16時までのデータを抽出
london_setup = df.between_time('15:00', '16:00')
range_high = london_setup['High'].max()
range_low = london_setup['Low'].min()

これを全日程分ループさせて計算することで、毎日異なる「今日の突破すべきライン」を自動で算出できるようになります。

基準となる「ボックス」を定義しよう

取得した最高値と最安値から、視覚的にもわかりやすい「ボックス」の概念をコードに組み込みます。単に数字として持っておくだけでなく、「この幅(pips)はいくらか?」を計算しておくのがコツです。

レンジの幅があまりに広すぎる日は、ブレイクしてもすでに伸びきっている可能性が高いため、エントリーを見送るという判断基準に使えるからです。

以下のリストは、ボックスを定義する際に保持しておくべき情報です。

  • Box High:レンジの最高値
  • Box Low:レンジの最安値
  • Box Range:高値と安値の差(pips換算)
  • Valid Day:指標などで異常な動きをしていないかの判定フラグ

これらの情報をその日の「前提条件」として記録しておくことで、次のステップであるエントリー判定の精度がぐっと上がります。

手順2:ブレイクアウトの判定ロジックを書く

基準が決まったら、次は「いつ注文を出すか」という核心部分のロジックを組み立てます。

ブレイクアウトの判定コード

基本のロジックは、「16:00以降の価格が、Box Highを上回ったら買い、Box Lowを下回ったら売り」というものです。これをプログラムで表現するには、データを1行ずつ確認していくループ処理が必要です。

Claude Codeに「判定ロジックを書いて」と頼むと、以下のような構造のコードを提案してくれるはずです。

for index, row in df_after_london.iterrows():
    if row['Close'] > range_high:
        # 買いエントリー!
        break
    elif row['Close'] < range_low:
        # 売りエントリー!
        break

ここで重要なのは、1分足などの細かい時間足を使う場合、一時的なヒゲで判定するのか、終値が確定するのを待つのかを決めておくことです。一般的には、終値でしっかり抜けたことを確認するほうが、ダマシを減らせると言われています。

ダマシを防ぐためのフィルター設定

「抜けたと思ったのにすぐに戻ってきた」というダマシは、ブレイクアウト戦略の最大の敵です。これを防ぐために、いくつかのフィルターを追加しましょう。

例えば、「高値を1pips抜けただけでは入らず、3pips抜けるのを待つ」というバッファを設ける方法があります。また、ボラティリティインジケーターである「ATR」を使って、現在の値動きの激しさに合わせてバッファを調整するのも有効です。

「確かに、抜けた直後にエントリーするのは不安ですよね」と多くの人が感じますが、この不安を「数値化されたルール」に置き換えるのがシステムトレードの醍醐味です。Claudeに「3pipsのバッファを追加して」と頼めば、即座にロジックを書き換えてくれます。

エントリー条件をコードに落とし込む

最後に、エントリーのタイミングを記録します。ただ「買った」という記録だけでなく、以下の情報をセットで保持するようにしましょう。

  • エントリーした時刻
  • 約定価格
  • その時点の基準レンジ幅
  • エントリーの方向(Long or Short)

これらのデータがあれば、後で「どんな条件のときに勝率が高かったか」を詳細に分析できます。

例えば、「火曜日の16:15に、レンジ幅15pipsでエントリーしたときは勝率が高い」といった傾向が見えてくるかもしれません。コード上では、これらの情報を辞書形式やDataFrameの新しい行として追加していくのが一般的です。

手順3:Claude Codeにバックテストを依頼する

ロジックができたら、過去数年分のデータで「本当に儲かるのか」を検証します。この作業もClaude Codeが得意とする分野です。

過去データを使って勝率を算出する

まずは、自分の書いたロジックを過去のデータに当てはめて実行します。Claude Codeに「作成したロジックを使って、過去1年分のデータでバックテストを実行し、最終的な利益と勝率を出して」と依頼しましょう。

AIは不足している処理(利益の累積計算や損益のリスト化など)を補いつつ、実行可能なコードを生成します。

計算結果として確認すべき主要な指標は以下の通りです。

  1. トータル利益:最終的にいくら増えたか
  2. 勝率:全トレードのうち、プラスで終わった割合
  3. プロフィットファクター:総利益を総損失で割った数値(1.5以上が目安)
  4. 最大ドローダウン:資産が最大で何%減った時期があるか

これらを見れば、その戦略が実戦で使えるレベルかどうかが一目でわかります。

プロンプト1つでグラフを出力する方法

数字だけ並べられても、資産がどのように推移したかは直感的にわかりにくいものです。Claude Codeに「資産曲線をグラフで表示して」と頼んでみてください。

AIはPythonのグラフ描画ライブラリを使い、右肩上がりのグラフや、逆に厳しい時期が一目でわかる図を生成します。また、実際のチャート上に「ここで買って、ここで売った」という印を表示させることも可能です。

視覚的に確認することで、「あ、この負けトレードはレンジ内でもみ合っているときに起きたんだな」といった気づきが得られます。これは、ただ結果の数字を眺めているだけでは得られない、非常に重要なステップです。

エラーが出たときのClaude Codeでの修正フロー

プログラムにエラーはつきものです。しかし、Claude Codeを使っていれば、エラーが出ても焦る必要はありません。ターミナルに表示されたエラーメッセージをそのままClaudeに貼り付けるか、あるいはClaudeが自動的にエラーを検知して修正案を提示してくれます。

「データの形が合わない」「時間が正しく変換されていない」といった初心者がハマりやすいポイントも、AIは的確に指摘します。

「ここが間違っていました、修正しますね」というAIの提案を確認し、y キーを押して適用する。この繰り返しだけで、プログラムがどんどん完成に近づいていきます。自分一人で数時間悩んでいたエラーが、数分で解決する快感をぜひ味わってみてください。

収益性を高めるためのリスク管理

戦略の勝率よりも大事なのが、負けたときにどれだけ被害を抑えられるかという「リスク管理」です。

ATRを使って損切り価格を自動調整する

損切りラインを「一律10pips」のように固定するのはあまり得策ではありません。なぜなら、相場のボラティリティ(値動きの激しさ)は日によって違うからです。

そこで便利なのが「ATR(Average True Range)」という指標です。直近の値動きの平均を算出し、「今の相場ならこれくらいの逆行はありえる」という幅を教えてくれます。

例えば、損切りラインを「Box LowからATRの0.5倍分だけ離した場所」に設定すると、ボラティリティが低い日はタイトに、高い日はゆったりとした損切りができるようになります。これにより、不必要な損切り(損切り貧乏)を防ぐことができます。

利益確定のタイミングを最適化しよう

どこで利益を確定(利確)させるかも、非常に悩ましい問題です。ロンドン・ブレイクアウトの場合、いくつかのパターンが考えられます。

  • 固定pipsで利確:20pips伸びたら機械的に決済する
  • リスクリワード比率:損切り幅が10pipsなら、その1.5倍の15pipsを狙う
  • 時間指定:ニューヨーク市場が始まる前に全決済する

以下の表に、それぞれのメリットとデメリットをまとめました。

手法メリットデメリット
固定pips確実性が高く、メンタルが安定する大きなトレンドを取り逃がす
リスクリワード理論的な期待値が計算しやすい利確ラインに届かず戻ってくることがある
時間指定持ち越しリスクを排除できる伸び盛りのタイミングで切る可能性がある

自分に合ったスタイルをClaude Codeに伝え、「時間指定の利確ロジックを追加して」といった形で実装を進めましょう。

1回のトレードにおける許容損失を決める

最後に、最も重要なのが「1回でいくら負けてもいいか」という資金管理です。プロの多くは、1回のトレードでの損失を口座資金の1%〜2%に抑えます。

例えば、100万円の資金があるなら、1回の負けは1万円〜2万円までに留めます。逆算して、「損切り幅が10pipsなら、何通貨持てるか?」をプログラムに計算させるのです。

これを怠ると、連敗したときに一気に資金が底をつき、市場から退場させられてしまいます。Claude Codeに「資金管理の計算機能を追加して」と依頼し、防御力を高めておきましょう。

実際に運用する際の注意点

バックテストで良い結果が出ても、リアルトレードには特有の難しさがあります。運用前に知っておくべき「落とし穴」を確認しましょう。

サマータイムによる時間ズレを防ぐ対策

ロンドン市場の時間帯は、イギリスのサマータイムによって1時間変動します。

  • 夏時間:日本時間 16:00 オープン
  • 冬時間:日本時間 17:00 オープン

この切り替えをコード内で自動化しておかないと、冬の間に1時間早いデータを参照し続けることになります。幸い、Pythonの pytz などのライブラリを使えば、日付から自動的にサマータイムを判別して処理することが可能です。

「サマータイムを考慮した時間変換コードを書いて」とClaudeに頼めば、この複雑な分岐処理も正しく実装してくれます。

スプレッドの影響をバックテストに含める

バックテストの数値が良すぎる場合、まず疑うべきは「スプレッド(取引手数料)」が含まれているかどうかです。

FXでは、買った瞬間に数pipsのマイナスからスタートします。これを計算に入れないと、「理論上は勝てるのに、現実にはじわじわ資産が減る」という現象が起きます。

バックテストのコードを書く際は、必ず「エントリー時に固定のコストを引く」という処理を入れてください。この厳しい条件でも資産が増えるようなら、その戦略は本物です。

ニュース発表時の動作をどう制御するか

ロンドン市場の開始前後には、重要な経済指標(失業率や政策金利など)が発表されることがあります。このときはテクニカルを無視した暴力的な動きになるため、通常の戦略は通用しません。

「重要なニュースがある日はトレードしない」というルールを設けるのが、賢明な判断です。自動売買プログラムを動かす際も、カレンダーAPIを叩いて指標発表を検知するか、あるいは手動でその日の動作を停止させるスイッチを用意しておくことが、大きな損失から身を守ることに繋がります。

Claude Codeをさらに活用するテクニック

最後に、今のプログラムをさらに進化させるための応用術を紹介します。

戦略のパラメータを自動で最適化する

「レンジの時間は15時〜16時が良いのか、それとも14時〜16時のほうがいいのか?」こうした疑問も、Claude Codeに頼めば総当たりで検証(最適化)できます。

数値を少しずつ変えながらバックテストを繰り返し、最も利益が出た組み合わせを探し出すのです。ただし、あまりに過去のデータに合わせすぎると「カーブフィッティング(過剰適合)」が起き、将来の相場で全く勝てなくなるので注意してください。

「最適化の結果、一番良かったパラメータを教えて。ただし、過剰適合していないかチェックして」とAIにアドバイスを求めるのがコツです。

定期的な実行を自動化するスクリプトの作成

コードが完成したら、毎日手動で動かすのは大変です。Pythonのスケジュール実行機能を使って、特定の時間に自動でデータを取得し、チャンスが来たら通知を飛ばす仕組みを作ることができます。

例えば、LINEやDiscordに「ブレイクアウトしました!」とメッセージを送るように設定すれば、チャートを監視し続ける必要がなくなります。

Claude Codeに「バックテストが成功したので、これを本番環境で16時に実行して通知するスクリプトにして」と頼んでみましょう。APIの設定方法を含め、丁寧にガイドしてくれます。

別の通貨ペアへ戦略を横展開する方法

ポンドドルで成功したら、次はユーロドルやゴールド(XAU/USD)など、他の銘柄でも試してみたくなるはずです。

ロンドン・ブレイクアウトはボラティリティが高い銘柄なら応用が効きます。銘柄名を変えるだけでバックテストを回せるようにコードを共通化しておくと、横展開が楽になります。

「銘柄名を引数にして、どの通貨ペアでもバックテストできる構造に整理して」とClaudeに頼めば、プロ顔負けの美しいコードに生まれ変わります。

まとめ:自分の戦略を形にしよう

ロンドン・ブレイクアウト戦略は、シンプルながらも市場の理にかなった強力な手法です。これをPythonとClaude Codeで構築することで、単なる「勘」ではなく、データに裏打ちされた根拠あるトレードが可能になります。

今回のポイントを振り返ると、以下の3点が特に重要です。

  1. 時間管理の徹底:サマータイムや日本時間への正確な変換。
  2. Claude Codeの活用:AIを「共に悩み、共に書く」パートナーとして使い倒す。
  3. 防御の強化:ATRや資金管理をコードに組み込み、一発退場を防ぐ。

AIの力を借りれば、以前なら数週間かかった開発も、今や数時間で形にできます。まずは今日、数日分のデータを取得して、自分の目でブレイクアウトの瞬間を確認するところから始めてみてください。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

目次