本記事は連載 「非エンジニアでもわかる!AIと作るFX自動売買入門」 の1本です。
第4回では、Claude Codeに「作って」「変えて」と頼む基本の型を押さえました。
今回は、そこから一歩進んで、自動売買botのように複数の機能が絡む依頼をどう分けて頼めばよいかを扱います。
「一気に全部作って」で頼むと、なぜうまくいかないのか。そして、どのくらいの粒度で分ければAIが答えやすくなるのか。
このあたりのコツを一度整理しておくと、実際にbotを組み立てていくときに、指示の出し方で迷わずに済むようになります。
この記事のゴール
本記事を読み終えた時点で、以下ができる状態を目指します。
- 「一気に全部作って」がなぜ失敗しやすいかを言葉で説明できる
- 依頼を「小さく」「具体的に」分ける基準がわかる
- 自動売買botを4つのステップに分けて頼む全体像がイメージできる
- 「一気頼み」と「分割依頼」の違いを、実際にご自身の手元で試して体感できる
- 頼み方がずれたときの言い直しの型を持っている
- コピペで使えるプロンプトテンプレートを4つ手元に置いている
事前準備
以下が完了していることを前提に進めます。
- 第2〜4回でClaude Code Desktopの操作に一通り慣れている
- 第3回で
oanda_botフォルダにget_rate.py(ドル円のレートを取得するコード)が作られている
まだお済みでない方は、先に第2〜4回をご覧ください。
なお、本記事では自動売買botそのものは組み立てません。
前半で頼み方の考え方を整理したあと、後半では get_rate.py に小さな機能を追加する実験を通じて、「一気頼み」と「分割依頼」の違いを実際の出力で見比べていきます。
なぜ「一気に全部作って」だと失敗するのか
まずは、ありがちな失敗例から見ていきましょう。
いきなり全部頼んだらどうなるか
たとえば、Claude Codeに次のように頼んだとします。
🧑 OANDA APIでドル円の自動売買botを作ってください。過去データを取ってきて、移動平均線でシグナルを判定し、条件を満たしたら発注し、1分ごとにこれを繰り返してください。ログも残してほしいです。
一見するとわかりやすい依頼に見えます。しかしClaude Codeにこの文章だけを投げると、次のような結果になりがちです。
※環境によってアウトプットに差がある場合があります
- 長いコードが1ファイルにまとめて出力される
- 細かい部分がざっくり実装される(発注ロットや時間足がAIの独断で決まる)
- どこか一箇所が動かず、直したくてもどこを直せばよいかわからない
コードそのものは動くように見えても、意図とずれたところで動いていることが多く、結局手戻りが大きくなります。
AIの回答は必ずしも同じではありませんので、人によっては同じ指示でもファイルが分けて出力される場合もあります。ただし、ここをきちんと明確にしないまま指示を出すと、想定していたものと違うものが作成されて修正作業が重くなります。
失敗が起きる3つの理由
「一気頼み」がうまくいかない理由は、大きく次の3つです。
- AIも人と同じで、一度に多くのことを頼まれると抜けや誤解が出やすい
- 依頼が抽象的なまま進むので、AIが勝手に細部を決めてしまう
- コードが一気に長くなり、どこで何をしているかの切り分けが難しくなる
特に3つ目は、後から修正を頼むときに大きな壁になります。「発注のロットを変えて」と頼んだつもりが、無関係なシグナル判定まで書き換わってしまう、といったことも起こりえます。
私が実際に依頼したところ、以下のような結果になりました。
- 1ファイルにまとめて出力(ファイル名もAIが決定)
- 売買条件については、以下の内容をAIが勝手に設定
- 移動平均線の期間は短期が5、長期が20
- ゴールデンクロスでBUY、デッドクロスでSELLでシグナルを出す
- シグナルが出たら現在のポジションを確認して、逆方向なら決済して新規発注
- ログを
trade_bot.logに保存する(ファイル名はAIが決定)
一気頼みの副作用
もう一つ見落としがちな副作用があります。
一気に全部作ると、動作確認のタイミングが最後にしか来ません。途中で「あれ、思っていた動きと違う」と気づいても、原因がどのブロックにあるかを探すところから始まってしまいます。
自動売買のように、一つひとつの動作が資金の増減に直結する分野では、これは避けたい状態です。
タスクを「小さく」「具体的に」分けて頼む
失敗の裏返しが、そのままコツになります。キーワードは「小さく」と「具体的」の2つです。
基本原則:1プロンプト=1つの動くもの
もっとも大事な原則が、これです。
1回の依頼で作ってもらうのは、単体で動作確認できる最小のかたまり1つだけにします。
たとえば「レートを取得して画面に出す」であれば、それだけで1つの依頼にします。「レートを取得して画面に出しつつ、CSVにも保存して、時刻も日本時間に変換する」だと、3つの依頼を1つに詰め込んでいることになります。
このくらい大げさに切り分けても、Claude Codeとの会話であればテンポよく進められます。一つ動いたら次を頼む、というリズムを作るのがコツです。
「小さい」の目安
「どのくらい小さければよいか」の目安は、次の通りです。
- 出力されるファイルが1つである
- コードの行数が数十行以内に収まる(多くても数百行以内)
- 動作確認が「実行して、画面の表示を見るだけ」で済む
このどれかを超えそうな依頼は、いったん切り分けを検討してみてください。
「具体的」の目安
「具体的」かどうかは、次の3点を自分の言葉で書けるかで判断できます。
- 入力:何を受け取るコードか(例:APIキー、通貨ペア名、期間)
- 処理:何をするコードか(例:直近100日分の日足データを取得する)
- 出力:何を出すコードか(例:CSVファイルに保存する、画面に表示する)
3つのうち1つでも「AIに任せる」と書きたくなったら、依頼が抽象的すぎるサインです。そこは自分の希望を明文化するか、Claude Codeに「候補を出して」と別途相談するのが安全です。
実例:自動売買botを4ステップに分けて頼んでみる
ここまでの原則を、自動売買bot全体に当てはめてみます。本連載で作っていくbotは、大きく次の4つのステップに分けられます。
4ステップの全体像
- データを取る:現在レートや過去データをOANDA APIから取得する
- 売買を判断する:取得したデータから「買う/売る/何もしない」を判定する
- 発注する:判定結果を受けて、デモ環境に注文を出す
- 監視して繰り返す:1〜3を一定間隔で回し続ける
図にすると、次のようなイメージです。
なぜこの4分割なのか
この4分割にしている理由は、各ステップが単体で動作確認できるからです。
- データを取るだけのコードは、実行すれば「取れたか」がすぐわかる
- 判断するだけのコードは、過去データを入れれば「買いか売りか」がすぐわかる
- 発注するだけのコードは、デモ環境で「注文が入ったか」がすぐわかる
- 監視ループは、1〜3が動くようになってから最後に組む
ステップごとに完結しているので、途中で問題が起きても切り分けが容易です。反対に、これらを混ぜて依頼すると、先ほどの「一気頼み」の失敗にまっすぐ戻ってしまいます。
各ステップで頼むプロンプトの骨格
イメージを掴んでいただくために、各ステップの依頼の骨格だけ示しておきます。
ステップ1:データを取る
🧑 OANDA APIを使って、ドル円の直近100日分の日足データを取得し、oanda_botフォルダに rates.csv として保存するPythonコードを作ってください。APIキーは ~/oanda_credentials/.env から読み込み、デモ環境を使ってください。
ステップ2:売買を判断する
🧑 rates.csv を読み込んで、5日移動平均と25日移動平均のゴールデンクロス/デッドクロスを判定し、最新日の判定結果(「買い」「売り」「様子見」)を画面に出力するPythonコードを作ってください。
ステップ3:発注する
🧑 OANDA APIのデモ環境で、ドル円を1,000通貨だけ成行で買い注文するPythonコードを作ってください。利確30pips、損切り20pipsで同時に指定してください。
ステップ4:監視して繰り返す
🧑 ステップ1〜3のコードを組み合わせて、1分ごとに現在レートを取得し、判定結果に応じて発注する監視ループを作ってください。Ctrl+Cで正しく止まるようにしてください。
いずれも「入力・処理・出力」がはっきりしていて、単体で試せる粒度になっているのがおわかりいただけると思います。
ステップの区切りで「一区切り」を明示する
もう一つコツがあります。ステップが1つ完成したら、Claude Codeに次のように伝えてください。
🧑 ここでいったん区切りとします。ステップ1は完了です。次のステップに進むまで、このファイルは触らないでください。
こう明示しておくと、次の依頼をした際に、AIがステップ1のコードを勝手に書き換えてしまうリスクを減らせます。
会話が長くなってきたタイミングであれば、/compact で圧縮するか、/clear で会話をリセットしてから次のステップに進むのも有効です。
実験:一気頼み と 分割依頼 を比べてみる
ここまでは考え方の話でした。このセクションでは、実際に同じお題を2通りの頼み方で試して、出力の違いを見比べていきます。
お手元のClaude Codeで一緒に試していただくと、感覚が一気につかめます。
今回のお題
第3回で作った get_rate.py に、次の3つの機能を追加してみます。
- USD/JPY、EUR/JPY、GBP/JPY の3通貨ペアのレートを一度に取得する
- 取得結果をCSVファイルに保存する
- CSVのファイル名に取得時刻を含める
小ぶりですが、複数の機能が絡む依頼です。これを「Aパターン:一気頼み」と「Bパターン:分割依頼」で試してみます。
Aパターン:一気頼みで試す
まず、Claude Codeで /clear を実行して会話をリセットしてから、次のプロンプトを送ってみてください。
🧑 get_rate.py を修正して、USD/JPY、EUR/JPY、GBP/JPY の3通貨ペアのレートを一度に取得し、取得結果をCSVに保存できるようにしてください。CSVのファイル名には取得時刻を含めてください。
Claudeが一気に修正を進めて、動くコードが返ってきます。
一見、うまくいっているように見えます。
ただ、返ってきたコードをよく見ると、次のようなAIの独断ポイントが混ざっていることが多いです(※環境によってアウトプットが異なる場合があります)。
- CSVの列の順番(時刻・通貨ペア・レートの並び)がAI任せ
- 時刻のフォーマット(
2026-08-31_133045なのか20260831-133045なのか)がAI任せ - 小数点の桁数がAI任せ
- CSVのファイル名がAI任せ
- 取得に失敗した通貨ペアがあったときの挙動が不明瞭
「動くけれど、細部が自分の意図と違う」という状態になりがちです。
そして厄介なのが、「あとで列の順番だけ変えたい」といった修正を頼んだときです。Claude Codeが取得ロジックにまで手を入れて、動いていた部分を壊してしまう、といった副作用が起きることがあります。
Bパターン:分割依頼で試す
次に、もう一度 /clear で会話をリセットしてから、同じお題を3つに分けて頼みます。
ステップ1:3通貨ペアの取得だけ
🧑 get_rate.py を修正して、USD/JPY、EUR/JPY、GBP/JPY の3通貨ペアのレートを取得し、画面に表示するようにしてください。CSV保存はまだ入れないでください。
実行して、3ペアのレートが画面に出れば成功です。ここで一度動作を確認します。
ここではCSV保存のプロセスを削除してくれました。USD/JPY、EUR/JPY、GBP/JPY の3通貨ペアのレートを取得して表示するのみの機能になっています。
ステップ2:CSV保存の追加
ステップ1が動いたら、続けて次のように頼みます。
🧑 ステップ1で取得した3通貨ペアのレートを、oanda_botフォルダ内の rates.csv に保存する処理を追加してください。CSVの列は「時刻、通貨ペア、bid、ask」の順にしてください。既存の画面表示はそのまま残してください。
列の順番や画面表示の扱いをこちら側で明示しているので、AIの独断が入る余地が減ります。
ここでは rates.csv に保存するように依頼したので、ファイル名は常に rates.csv となり、すでにファイルが存在する際には追記して保存される形で実装されています(ここを少し改良する必要があります)。
保存されたCSVを見ると、意図通りの構成になっていることが確認できました。
ステップ3:ファイル名に時刻を含める
最後に、次のように頼みます。
🧑 rates.csv のファイル名を、rates_YYYYMMDD_HHMMSS.csv(例:rates_20260831_133045.csv)の形式に変更してください。他の処理は触らないでください。
時刻フォーマットも自分で指定しています。これで、3ステップに分けた実装が完了です。
結果を比べてみる
今回の2つのパターンを並べると、次のような違いが見えてきます。
| 観点 | Aパターン(一気頼み) | Bパターン(分割依頼) |
|---|---|---|
| 完成までの依頼回数 | 1回 | 3回 |
| 完成までの体感時間 | 短い | やや長い |
| 細部の意図反映 | AI任せの箇所が多い | 依頼者の意図が反映されやすい |
| 途中の動作確認 | できない(最後に一度きり) | 各ステップで実行して確認できる |
| 修正のしやすさ | どこを直せばよいか探すのが大変 | どのステップで問題が起きたか明確 |
「早く終わらせたい」であればAパターンでも構いません。
ただ、あとから微調整したい、動かなかったときに原因を切り分けたいという場面では、Bパターンの分割依頼の方が結果的に早く着地します。
実験から見えたこと
今回の実験で押さえておきたいポイントは、次の3つです。
- 動くコードが出るかどうかではなく、あとで直しやすいかで分割の価値が出る
- 依頼のなかに「〜して、〜して、〜も」と「〜して」が2つ以上入ってきたら、分割を検討する合図
- 各ステップで一度実行して結果を確認するという流れが、意図とのズレを早期に発見してくれる
自動売買botのように、後々の修正が何度も発生する開発では、この分割の効果はさらに大きくなります。
うまく頼めなかったときの言い直し方
どんなに気をつけて頼んでも、返ってきたコードが意図とずれることはあります。そのときは、次の3つの型を使い分けて言い直してみてください。
型1:「そうではなく、〜という意味です」
意図が伝わっていないだけの場合は、この型が一番使いやすいです。
🧑 そうではなく、5日移動平均と25日移動平均のクロスを判定してほしい、という意味です。20日ではありません。
前提を短く言い直すだけで、Claudeが自分で該当箇所を直してくれます。
型2:「一旦戻して、〜だけ作り直してください」
大きくずれてしまった場合は、いったん戻す指示が効きます。
🧑 一旦、この修正を全部取り消してください。そのうえで、CSV保存の部分だけをもう一度書き直してください。
Claude Codeは会話履歴を覚えているので、「戻して」と言えば直前の変更を巻き戻してくれます。
型3:「〜を触らずに、〜の部分だけ変えてください」
修正範囲を絞りたいときは、この型が便利です。
🧑 データ取得の部分は触らずに、CSVに保存する列の順番だけ変えてください。
Claude Codeが余計な場所まで書き換えてしまうのを防げます。
何度言っても噛み合わないときは /clear で仕切り直す
3つの型を試しても噛み合わない場合は、会話の文脈自体がねじれている可能性があります。そのときは、思い切って /clear で会話をリセットし、依頼を組み立て直してみてください。
「今までの会話は捨てる」というのは勇気がいりますが、噛み合わないまま会話を続けるより結果的に早く進むことが多いです。
コピペで使えるプロンプトテンプレート集
最後に、日常的に使い回せるテンプレートを4つまとめておきます。必要に応じて [] の中を書き換えてお使いください。
テンプレ1:新規作成
第4回の「何を・どこに・どう動く形で」を組み込んだ型です。
[何を] するPythonコードを、oanda_botフォルダに [ファイル名] として作成してください。
入力:[受け取るもの]
処理:[やること]
出力:[出すもの]
APIキーが必要な場合は ~/oanda_credentials/.env から読み込み、OANDA APIはデモ環境を使ってください。
書き終わったら実行して、結果を教えてください。
テンプレ2:修正依頼
「今の状態→変えたい状態」を明示する型です。
[ファイル名] の [どこ] を修正してください。
今の状態:[現在の動き]
変えたい状態:[変えたい動き]
それ以外の部分は触らないでください。
テンプレ3:エラー相談
エラーメッセージをそのまま貼るのが基本です。
実行したら次のエラーが出ました。原因と修正案を教えてください。
—
[エラーメッセージをそのまま貼り付け]
—
直せそうであれば修正まで進めてください。
テンプレ4:小さく試す
大きな依頼の前に、部分だけ動くか確認する型です。
本番のコードを書く前に、[試したい1機能] だけを動かす短いテストコードを oanda_bot/tmp フォルダに作ってください。
[試したい1機能] が動くと確認できたら、その旨だけ教えてください。
コードはあとで削除しても構いません。
「いきなり大物を頼まず、小さな試作から入る」流れを組み込みたいときに便利です。
うまくいかないときは
ここまでの考え方でつまずいたときの対処をまとめます。
分けたはずが、結局大きくなってしまう
依頼を書き始めたら思いのほか長くなった、というときは、依頼の中に「〜して、〜して、〜も」と**「〜して」が3つ以上**入っていないか確認してみてください。
3つ以上ある場合は、そのうち1つを取り出して先に頼み、残りは次の依頼に回すのがおすすめです。
AIが勝手に4ステップを一気に作ろうとする
「自動売買bot」と伝えると、Claude Codeが気を利かせて全部を書き始めることがあります。そのときは、次のように先に伝えておくと落ち着きます。
🧑 これから4つのステップに分けて依頼します。1回の依頼では、明示的に頼んだ部分だけを作ってください。それ以外の機能は書かないでください。
会話の最初に方針を宣言しておくのが効果的です。
プロンプトが長くなりすぎる
テンプレを埋めていくと、依頼が長くなってしまうことがあります。10行を超えるようなら、次の順で見直してみてください。
- 背景説明が長すぎないか(プロジェクトの経緯などは不要)
- やってほしいことが2つ以上入っていないか
- AIの気持ちを配慮した前置きが入っていないか(不要)
依頼はドライで短いほどよく伝わる、と覚えておいてください。
まとめ
本記事では、Claude Codeへの依頼を「小さく」「具体的に」分けるコツをまとめました。ポイントを振り返ります。
- 「一気に全部作って」は、抜け・誤解・切り分け困難の3つの理由で失敗しやすい
- 基本原則は 1プロンプト=1つの動くもの
- 「小さい」の目安は 1ファイル・数十行・単体で動作確認できる粒度
- 「具体的」の目安は 入力・処理・出力を自分の言葉で書ける状態
- 自動売買botは データ取得 → 判断 → 発注 → 監視ループ の4ステップに分けて進める
- 同じお題を一気頼みと分割依頼で試すと、「あとで直しやすいか」の差が実感できる
- ずれたときは「そうではなく」「一旦戻して」「〜を触らずに」の3つの言い直しを使い分ける
- コピペテンプレを4つ手元に置いておくと、日々の依頼が安定する
この4分割の考え方は、第7回以降でbotを実装していく際の軸になります。
次回(第6回)は、AIが作ってくれたコードを動かす前にやっておきたい 「3つの安全チェック」 を扱います。コードが読めなくても、AIに質問するだけで安全性を確認できる方法をまとめていきます。
免責事項
OANDA証券株式会社
第一種金融商品取引業 関東財務局長(金商)第2137号/商品先物取引業者
加入協会:一般社団法人 金融先物取引業協会/日本証券業協会/日本商品先物取引協会
- 店頭外国為替証拠金取引(FX)、株価指数CFD取引及び商品CFD取引は、元本及び利益が保証されている金融商品ではありません。預託した証拠金の額に比べ大きい金額の取引ができるため、外国為替、株式、株価指数、商品、金利市場等の市場変動により、その損失額が預託された証拠金額を上回る可能性があります。
- 各取引に必要な証拠金は次の通りです。店頭外国為替証拠金取引に関しては、個人口座は取引金額の4%以上、法人口座は、金融先物取引業協会が算出した通貨ペアごとの為替リスク想定比率を取引の額に乗じて得た額と、当社が算出したリスク想定比率を用いた額のどちらか高い額以上(為替リスク想定比率とは、金融商品取引業等に関する内閣府令第117条第27項第1号に規定される定量的計算モデルを用い算出します)、株価指数CFD取引に関しては、個人口座・法人口座いずれも取引金額の10%以上、商品CFD取引に関しては、個人口座・法人口座いずれも取引金額の5%以上の証拠金が必要です。
- 口座管理費及び取引手数料は原則無料です。但し一部取引コースに関しては、取引にあたり手数料が発生することがあります。手数料の詳細については、該当するコースの取引説明書をご覧ください。
- 売付価格と買付価格には差(スプレッド)があり、相場急変動等によりスプレッド幅が拡大し、意図したお取引ができない可能性があります。
- お取引を始めるにあたっては取引説明書及び取引約款を熟読し、取引内容や仕組み、リスク等を十分にご理解いただいた上で、ご自身の判断にてお取引くださるようお願い致します。
- 弊社企業情報は、弊社ホームページに開示しています。
- お客様相談窓口:0120-923-213/日本商品先物取引協会相談センター:03-3664-6243






