見出し画像

ChatGPT(生成AI)の売買判断を定期的に連携して自動的にFX取引を行うEAの開発

はじめに

「ChatGPTなどの生成AIにFX取引の売買判断を任せたい」

ChatGPTをはじめとした生成AIは、近年急速に進化しています。その性能が飛躍的に向上していることは、皆さまご認識の通りかと思います。この記事では、生成AIによる売買判断を取り入れたFX自動売買の新たな可能性を探っていきます。具体的には、手作業でChatGPTに質問し、その回答を利用する一時的な使い方ではなく、GPT APIを用いて質問から回答の取得、注文の送信までを完全自動化するシステムを構築します。このアプローチが、生成AIをFXトレードに取り入れるための基本的なテンプレートとなることを目指しています。

目的と概要

  • 現実的な環境を想定してバックテストを行い、勝率や損益の計算を実施し、プロンプトやAIモデルの性能、予測能力を比較評価します。

  • 実際にMT5のEAとして稼働可能なレベルのロジックを搭載したGPT-EA(生成AI搭載型FX自動売買ツール)を開発します。

  • プロンプト(AIへの質問)を自由にカスタマイズして性能を試したりすることができるように、GPT-EAのバックテスト用ツールを提供します。

最終的には、かなり実践的な内容(実際にリアル取引口座でFX自動売買が行えるレベル)まで踏み込んでいくことになります。
なお、このGPT-EAのテンプレートは、生成AIの性能向上に伴って自動的にEAの性能も向上する可能性を秘めており、非常に汎用性の高いものになることが期待されます。

生成AIとFX自動売買ツールの連携にご興味のある方は、ぜひ最後までお付き合いください。

GPTへの質問

まず、ChatGPTのような生成AIから、FX取引における将来予測、売買判断についてどの程度の回答が得られるのか確認してみます。

例えば以下の4時間足(始値、高値、安値、終値)データを用意します。

画像
GOLDの4時間足OHLCデータ

これはGOLDの2022年10月における実際のOHLCデータです。4時間足の18
レコード分なので、72時間分の価格推移情報です。

GPTには、これを過去72時間分のデータとして提供して、その後の売買戦略を決定してもらうことにします。

GPTからの回答

生成AIは常にバージョンアップを続けていて、GPTにも複数のモデルが存在しますが、ここではGPT-3.5 TurboとGPT-4oという2つのモデルで同じ質問を試して、性能を比較してみます。

GPT Reply (gpt-3.5-turbo):

まずは、GPT-3.5 Turboという少し前のモデルで確認してみたところ、以下のような回答が得られました。

  • エントリー基準価格: 1680.22

  • 利確目標価格: 1690.55

  • ロスカット基準価格: 1665.68

根拠:

  • エントリー基準価格は、直近の上昇トレンドの高値を基準として設定しました。この価格を超えた場合にエントリーすることで、上昇トレンドに乗ることができる可能性が高まります。

  • 利確目標価格は、エントリー基準価格からの上昇幅を考慮して設定しました。この価格に到達すると利益確定することで、トレードの成果を最大化することができます。

  • ロスカット基準価格は、エントリー基準価格よりも一定の幅を下回った場合に損切りするための価格です。この価格を下回ると、トレードが逆転して損失が拡大する可能性が高いため、ポジションをクローズすることが重要です。

GPT Reply (gpt-4o):

続いて、GPT-4oというより新しいモデルでも確認してみます。

  • エントリー基準価格: 1669.88

  • 利確目標価格: 1675.00

  • ロスカット基準価格: 1660.00

根拠:

  1. 現在価格は最後のレコードの終値である1665.69です。

  2. 順張りエントリーの基準価格は、直近の高値である1669.88を超えた場合とし、エントリー基準価格を1669.88と設定しました。

  3. 利確目標価格は、エントリー基準価格から約0.3%上昇した1675.00としました。

  4. ロスカット基準価格は、エントリー基準価格から約0.6%下落した1660.00としました。これはリスク管理の観点から設定しています。

損益検証

ひとまず、GPT-3.5 TurboとGPT-4oという2つのモデルで異なる回答内容が得られたことは確認できましたが、これだけでは性能の違いを評価しづらいので、それを実際に取引行動に移した場合の損益をシミュレーションしてみます。

インプットデータ

まずは、GPTへのインプットデータである過去72時間分(18本)の4時間足をローソク足チャートで出力すると以下の通りです。

画像
過去72時間分(18本)の4時間足

GPTとしては、ここまでのデータが取得できている状態で、その後の将来の価格変動を予測した上で取引戦略を決定しているイメージです。

損益計算前提

価格差1.00あたりの損益は100円とした上で損益計算を行います。スプレッドやその他取引に伴う誤差は考慮しない簡易的な損益計算になります。どちらも同じ条件で計算するので、性能を比較する上では問題ない想定です。

損益結果 (gpt-3.5-turbo)

まず、GPT-3.5 Turboの回答にしたがって取引を実行した場合です。

4時間足

画像
エントリーポイント&クローズポイント(gpt-3.5-turbo)

詳細な価格推移(1分足)

画像
1分単位の価格変動(gpt-3.5-turbo)

取引履歴

  • エントリー基準価格である1680.22には、396分後に到達しました。

  • その後、利益確定目標価格である1690.55に到達する前に、ロスカット基準価格である1665.68に204分後に到達し、損失が確定しました。

  • エントリー価格1680.22とクローズ価格1665.68の差は14.54であり、損益は-1,454円という結果になりました。

損益結果(gpt-4o)

続いて、GPT-4oの回答にしたがって取引を実行した場合です。

4時間足

画像
エントリーポイント&クローズポイント(gpt-4o)

詳細な価格推移(1分足)

画像
1分単位の価格変動(gpt-4o)

取引履歴

  • エントリー基準価格である1669.88には、144分後に到達しました。

  • その後、ロスカット基準価格である1660.00に到達する前に、利益確定目標価格である1675.00に246分後に到達し、利益が確定しました。

  • エントリー価格1669.88とクローズ価格1675.00の差は5.12であり、損益は512円という結果になりました。

1,000回のランダムシミュレーション

上記の通り、サンプル1ケースの比較では、GPT-3.5 Turboの場合は1,454円の損失、GPT-4oの場合は512円の利益、とわかりやすく結果に差が出ました。
ただし、1件だけではたまたまの可能性も否定できないため、もう少し数多くのサンプルを確認する必要があります。

そこで、サンプル1件のケースと同様の方法を1,000回繰り返します。
毎回ランダムで4時間足からデータを抽出した上で損益シミュレーションを行い、1,000回分の累計損益結果を比較してみます。

損益結果(gpt-3.5-turbo)

総損益:29,462円
エントリーなし:695、勝利数:174、敗退数:131
エントリー率:30.50%、勝率:57.05%
利益確定:147,555円、ロスカット:118,093円
プロフィットファクター:1.25

画像
損益グラフ(gpt-3.5-turbo)

損益結果(gpt-4o)

総損益:76,978円
エントリーなし:262、勝利数:416、敗退数:322
エントリー率:73.80%、勝率:56.37%
利益確定:359,776円、ロスカット:282,798円
プロフィットファクター:1.27

画像
損益グラフ(gpt-4o)

損益比較(gpt-3.5-turbo → gpt-4o)

 GPT APIのモデルについて、gpt-3.5-turboの場合と gpt-4oの場合で損益を比較してみます。

画像
損益比較グラフ

想像以上にわかりやすく結果に差が出ました。初動から終盤までgpt-4oの方が明らかにパフォーマンスが高そうな結果です。

主要な変化(gpt-3.5-turbo → gpt-4o)

  • 総損益:29,462円 → 76,978円

  • エントリー率:30.50% → 73.80%

  • 勝率:57.05% → 56.37%

  • プロフィットファクター:1.25 → 1.27

注目すべきは、エントリー率の上昇です。エントリー率が大きく上昇したにも関わらず、勝率やプロフィットファクターが大幅に低下しているわけでもありません。その結果、総損益が大きく増加しています。

"エントリーなし"の内訳

1,000回のシミュレーションのうち、

  • gpt-3.5-turboの場合はエントリーなしが695回

  • gpt-4oの場合はエントリーなしが262回

という結果でしたが、この内訳をより詳細に分析してみましょう。
今回用意したGPT-EAのバックテスト用ツールでは、以下のように試行結果の分類を出せる機能も備えています。

画像
損益比較(詳細版)

レスポンスエラーや価格エラーは、GPTの回答がそもそもエントリー注文内容として適切でなかったことを意味します。例えば、順張り買いエントリー戦略であるにも関わらず、エントリー基準価格がスタート価格を下回っていたり、利確目標価格がロスカット基準価格を下回ってしまっているような場合です。

gpt-3.5-turboの場合は、"エントリーなし"の695回うち、半数以上がGPTの回答エラーでした。こちらの指示(プロンプト)を正確に理解できず、正しい回答ができなかったケースと判断できます。
gpt-4oの方が回答エラーは明らかに少なくなっていて、モデルの精度が高いと言えるでしょう。

より詳しい分析は、バックテスト用ツールの提供記事でご確認ください。

GPT-EAのロジック解説・ファイル提供

さて、今回の記事は、実際に GPT-EAというFX自動売買ツールを作成し、ロジック検証やバックテストを行った上で、まとめました。
その際に作成したツールのロジック解説やファイル提供は以下の記事で行っています。

GPT-EAのテンプレート(MT5)

実際にMT5のEAとして稼働可能なレベルのロジックを搭載したGPT-EA(生成AI搭載型FX自動売買ツール)について、ロジックの詳細解説と実行ファイルの提供を行っています。

GPT-EA(無料版)のダウンロード

現在は、GPT-EAのテンプレートの無料版も提供しています。まずは、デモ口座で自由にお試しください。

👉 GPT-EA(無料版)のダウンロードはこちら

GPT-EAのバックテスト用ツール(Google Colab)

MT5の標準機能ではバックテストを行うことが難しい仕組みを採用しているため、GPT-EA専用のバックテスト用ツール(Google Colabで実行可能な形式)を開発・提供しています。

GPT-EAのフォワードテスト

現在、以下の条件でフォワードテストを実施しており、閲覧用のデモ口座を一般公開中です。

  • 2025年2月から残高100万円で運用を開始しています。

  • AIのモデルは、GPT-4oを採用しています。

  • それ以外は、GPT-EAのテンプレートをそのまま使用しています。

まとめ

以上のように、「生成AIにFX取引の売買判断を任せる」というテーマにおいては、テクニカル指標による売買判断や機械学習モデルを利用した売買判断などと比較しても非常に自由度が高いです。

今回用意したGPT-EAをテンプレートとして、ぜひご自身でも様々なことを試してみてください。

いいなと思ったら応援しよう!

sayama_ocha
よろしければ応援お願いします。いただいたチップは今後の記事の執筆に活用させていただきます。

ピックアップされています

GPT-EA マガジン

  • 8本

AI EA

  • 3本
ChatGPT(生成AI)の売買判断を定期的に連携して自動的にFX取引を行うEAの開発|sayama_ocha
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1