【AI直接売買 #1】EAを介さず、AIに直接発注させてみた——OANDA APIで最初の1,000通貨

TRACK B — AI直接売買

この記事は、MT5のEA売買(トラックA)とは別の口座・別の仕組みで動かしている「AI直接売買」の記録です。ClaudeがOANDAのAPIを通じて直接発注しています。仕組みの全体像はAI直接売買とはをご覧ください。

このブログでは8月から、MT5のEA(自動売買プログラム)をAIと一緒に作って動かす記録を書いてきました。今日から並行して、もうひとつのトラックを始めます。EAを介さず、AI(Claude)に直接発注させる実験です。

きっかけ:「AIの判断のほうが、固定ルールより上なのでは」

EAは、人が決めたルールをプログラムが機械的に実行するものです。相場が動いている瞬間にAIはいません。AIがやっているのは、設計の壁打ちとコード生成と、あとからログを読む監査です。

11本のEAを動かしながら、ずっと引っかかっていたことがあります。毎週の監査でClaudeにログを読ませると、「この局面はこう見るべきだった」という指摘が、たいてい的を射ている。それなら、その判断を後からではなく、相場が動いているその場でさせたらどうなるのか。固定ルールのEAより精度が高いのか、それとも「後から見れば何とでも言える」だけなのか。

確かめる方法はひとつしかありません。実際のお金で、AIに直接発注させて、EAと同じ物差しで測る。

MT5ではなく、証券会社のAPIに直接つなぐ

最初はMacにMT5を入れてAIに操作させることも考えました。でも、MT5は人が画面を見て操作する前提の道具で、AIが注文を出すには遠回りです。

選んだのはOANDA JapanのREST API(プログラムから直接、価格の取得や注文を行うための接続口)です。AIが「USD_JPYを1,000通貨、ストップロスはここ」と決めたら、そのままHTTPリクエストで口座に届く。間に何も挟まりません。

ただし、APIには利用条件があります。会員ステータスがGold以上(前月の取引数量で決まる。これはEA側の取引で維持しています)、NYサーバーのプロコース口座、そして残高25万円以上を継続して維持すること。この25万円ラインは、あとで何度も出てくる「壁」になります。

口座はAPI専用のサブ口座を新しく作り、28万円を入れました。EAが動いている口座とは完全に分けています。どちらかの事故がもう一方に波及しないようにするためです。

準備でつまずいたところ

Mac StudioにPythonが入っていませんでした(macOS標準では入っていないことを、このとき知りました)。python.orgから3.14を入れ、続いてAPIへの接続がTLS証明書のエラーで止まり、「Install Certificates.command」という付属スクリプトを実行して解決。こういう地味なところで1時間くらい溶けます。

そのうえで、Claudeに書かせたのが「oanda_tool.py」というコマンドラインツールです。残高の確認、価格の取得、買い・売り・決済。出力は全部JSONで、Claudeが読みやすいようにしてあります。そして、Claude Codeを同じMacに入れて、Claude自身がこのツールを叩けるようにしました。

AIに触らせない「安全上限」

AIに発注させるうえで、最初に決めたのは「AIが変えられないもの」です。ツールの中に「SAFETY」という設定を置き、Claudeへの指示書(CLAUDE.md)に「この設定は書き換えるな。上限に当たったら報告しろ」と明記しました。

項目初期設定(9/7時点)
1注文の最大30,000通貨(通常運用は10,000まで)
合計保有30,000通貨
同時トレード数5
1日の発注回数30
ストップロス必須。最大200pips
通貨ペアUSD_JPY, EUR_JPY, GBP_JPY, AUD_JPY, EUR_USD, GBP_USD

「合計30,000通貨」という数字は好みではなく、ロスカットの計算から出ています。口座の有効証拠金から想定損失を引いた額が、必要証拠金を上回っていないと、ストップロスに届く前に強制決済される。残高が変わったら必ず計算し直す、というルールも一緒に書きました。

もうひとつ。APIトークン(口座を操作するための鍵)が入った設定ファイルを、Claudeは「読まない・表示しない」。診断には別のコマンドを使う。AIに口座の操作権を渡すのだから、鍵の扱いだけは最初に線を引いておきたかった。

初めての1,000通貨

9月7日、Claudeに「USD_JPYを1,000通貨、買い」と発注させました。約定価格155.822、ストップロスと利確が指示どおりに付いていることをAPIの返答で確認。金額としては何でもない取引ですが、AIが自分で組み立てた注文が、実際の口座に届いた最初の瞬間でした。

その日のうちに、15分ごとに全ペアをチェックして、条件を満たせば承認なしで発注する「自動売買モード」を有効にしました。エントリー条件はH1とH4の両方でEMA(移動平均線)の並びが同じ方向、押し目からの再開局面、リスクリワード2以上、指標の前後30分は見送り、など。ニュースは「見送る理由」にだけ使い、「入る理由」には絶対に使わない、と決めました。速報で先回りしようとしても、相場はもう織り込んでいるからです。

「影武者モード」——AIとルール、どちらが正しいかを測る

この実験の目的は「AIの判断はEAより上か」を測ることです。そこで、15分ごとのチェックで毎回、ルールの機械的な信号と、Claude自身の裁量判断の両方を記録することにしました。ルールが「買い」でClaudeが「見送り」なら、その見送りが損を避けたのか機会を逃したのかを、あとで機械的に採点します。

実際の発注はClaudeの判断に従います。ただし、100回分の判断が溜まるまで結論は出さない。Claude優位ならAIの裁量を広げ、ルール優位ならAIは環境判断と研究に専念して執行はルールに任せる。どちらに転んでもいい。測ることが目的です。

正直に書いておくこと

この時点で、エントリー条件に優位性があるかどうかはまったく検証していません。「順張りの教科書的な条件」を並べただけです。EAトラックで1年かけて学んだ「バックテストで良く見えても実戦では崩れる」という教訓が、そのままここにも当てはまるはずです。

なので、実弾を動かし始めたその日に、同じ条件を過去データで検証する道具(backtest.py)もClaudeに作らせました。次の記事は、その検証の話です。結果から言うと、かなり厳しいものでした。

BANDANAN AI FX LAB
このラボの記録は、毎週更新しています
記事の公開はXでお知らせしています。稼働中のEAと口座の推移はこちら。投資助言ではありません。
Xでフォロー資産推移

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です