FXの自動売買は、プログラミングスキルや市場知識が必要なため、初心者トレーダーにはハードルが高いとされています。
しかし、OpenAIのChatGPTを使用すれば、プログラミングに不慣れなトレーダーでもFXの自動売買を簡単に実現できるのではないかという期待があります。
今回は、ChatGPTを使用してFXの自動売買を作成することができるのか、徹底的に検証していきます。
ChatGPTとは?
ChatGPTは、OpenAIが開発した自然言語処理の大規模な言語モデルの一つで、機械学習の技術を用いてトレーニングされた人工知能エージェントです。ChatGPTは、テキストの生成や応答、文章の理解や要約など、自然言語処理の多くのタスクに対応できるように設計されています。
ChatGPTは、人工知能エージェントとの対話を通じて、さまざまなトピックに関する情報や意見、アドバイスを提供することができます。
ChatGPTにロジック(取引手法)決める
まずは簡単に、ChatGPTで「FXで勝てる手法」について聞いてみました。

「FXで勝つための確実な手法はない」とお断りいただいた上で、成功率を高める方法を教えてもらうことが出来ました。
それではより具体的なワードで聞いてみましょう。

それらしい返答が返ってきました!
今回はこの教えてもらったロジックを元に、自動でプログラムを生成してもらいましょう
ChatGPTでFX自動売買(EA)を生成する
今回は、自動売買プログラムの開発において広く用いられている、MQL4言語を使ってプログラムを生成していきたいと思います。
MQL言語とは
MQL言語は、外国為替や株式などの金融取引に特化した、自動売買システムやカスタムインジケータを作成するためのプログラミング言語です。C言語に基づいており、金融取引に必要な機能が組み込まれています。
MetaTrader 4およびMetaTrader 5といったトレーディングプラットフォームで使用され、リアルタイムな処理に適しています。MQL言語は、トレーダーが自動売買を行ったり、取引戦略に基づいて自動的に注文を送信したりすることができます。
実際にプログラムを生成する
先ほどChatGPTに考えてもらったロジックで、MQL4言語のプログラムを生成してもらいましょう。

以下が実際の回答のソースコードです。
// パラメーターの設定
extern int ma_period = 50; // MAの期間
extern int rsi_period = 14; // RSIの期間
extern int rsi_oversold = 30; // RSIのオーバーセルドレベル
extern int rsi_overbought = 70; // RSIのオーバーバウンドレベル
extern double stop_loss = 50.0; // ストップロスの値(pips)
// インジケーターの設定
int ma_handle, rsi_handle;
double ma_value, rsi_value;
// オーダーの設定
int order_type = 0; // 0: ポジションなし、1: ロング、-1: ショート
// エキスパートアドバイザーの初期化
int init() {
ma_handle = iMA(NULL, 0, ma_period, 0, MODE_SMA, PRICE_CLOSE); // MAの取得
rsi_handle = iRSI(NULL, 0, rsi_period, PRICE_CLOSE); // RSIの取得
return(0);
}
// エキスパートアドバイザーの開始
int start() {
// 現在の価格を取得
double current_price = MarketInfo(Symbol(), MODE_ASK);
// MAとRSIの値を取得
ma_value = iMA(NULL, 0, ma_period, 0, MODE_SMA, PRICE_CLOSE, 0);
rsi_value = iRSI(NULL, 0, rsi_period, PRICE_CLOSE, 0);
// ポジションがない場合
if (order_type == 0) {
// 価格がMAよりも上にある場合、RSIがオーバーセルドのレベルに達した場合、ロングポジションを開始
if (current_price > ma_value && rsi_value < rsi_oversold) {
OrderSend(Symbol(), OP_BUY, 0.1, current_price, 3, current_price - stop_loss * Point, 0, NULL, 0, 0, Green);
order_type = 1;
}
// 価格がMAよりも下にある場合、RSIがオーバーバウンドのレベルに達した場合、ショートポジションを開始
else if (current_price < ma_value && rsi_value > rsi_overbought) {
OrderSend(Symbol(), OP_SELL, 0.1, current_price, 3, current_price + stop_loss * Point, 0, NULL, 0, 0, Red);
order_type = -1;
}
}
// ポジションがある場合
else {
// ロングポジションがある場合
if (order_type == 1) {
// 価格がMAよりも下にある場合、ポジションを決済する
if (current_price < ma_value) {
OrderClose(OrderTicket(), OrderLots(), current_price, 3, Green);
order_type = 0;
}
// 利益が目標額に達した場合、ポジションを決済する
else if (current_price - OrderOpenPrice() > stop_loss * Point) {
OrderClose(OrderTicket(), OrderLots(), current_price, 3, Green);
order_type = 0;
}
}
// ショートポジションがある場合
else if (order_type == -1) {
// 価格がMAよりも上にある場合、ポジションを決済する
if (current_price > ma_value) {
OrderClose(OrderTicket(), OrderLots(), current_price, 3, Red);
order_type = 0;
}
// 利益が目標額に達した場合、ポジションを決済する
else if (OrderOpenPrice() - current_price > stop_loss * Point) {
OrderClose(OrderTicket(), OrderLots(), current_price, 3, Red);
order_type = 0;
}
}
}
return(0);
}
MetaEditorに張り付ける
先ほどの回答を、MetaEditorにコピーペーストします。
しかし、以下の画像のように17行目, 18行目にエラーが出てしまいました。

該当行を削除すると無事コンパイルが済み、EAの利用が可能になりました。
パラメータ等もある程度は変更できるようにChatGPTが配慮してくれたみたいです。

ChatGPTが作ってくれたEAは稼げるのか?
MetaTrader4では「ストラテジーテスター」という機能が用意されており、過去チャートを用いたEAの検証が可能です。
ChatGPTが生成したFX自動売買は稼ぐことができるのか?検証をしてみましょう。
ストラテジーテスターの設定
今回は以下の設定で検証を行いました。
通貨ペア: USDJPY
時間軸:M5(5分足)
検証期間:2022/01/01~2022/12/31
結論
取引は全く行われませんでした。
ロジック自体は比較的成立しやすい条件のため、自動で生成したプログラムに問題があるようです。
原因の考察
ChatGPTで正しく動作するEAが作成できなかった原因を以下の通り推測します。
PythonやJavaなどのメジャーな言語と比較して、MQL4言語は非常にマイナーな言語になります。そのため、ChatGPTが参考にする情報が不足していた可能性が高いです。
AIはデータを学習し、それに基づいて問題を解決するため、与えられた情報が少ない場合、正確な回答を出すことができないことがあります。
その他に活用方法はないのか?
ChatGPTがイチからFX自動売買を生成することは難しいことがわかりました。
では小さいプログラムではどうでしょうか。試してみましょう。

とても参考になるプログラムが生成できましたね!
このように全てのプログラムを任せず、あくまでも自身でプログラムをする手助けをするイメージで活用する方がおススメです。
まとめ
今回はChatGPTを利用してFX自動売買の作成を行いましたが、うまく動作しなかったことがわかりました。MQL4言語に関する情報が少ないため、優秀なChatGPTでも回答の精度はあまり高くないようです。
プログラミングを完全に任せきりにせず、あくまでも参考程度にすることが大切です!
コメント