RSI条件をEAに落とし込む方法 — AIプロンプト付き完全ガイド
読了 約6分
はじめに
RSI(Relative Strength Index)は、FXトレーダーにとって最もポピュラーなオシレーター系インジケーターの一つです。TradingViewでRSIを使った売買判断をしている方も多いでしょう。
この記事では、TradingViewのRSIインジケーターの条件をAI(ChatGPT/Claude Code)を使ってMT4のEA(自動売買プログラム)に変換する方法を、プロンプト例付きで解説します。
ChatGPTだけでなく、Claude Code(Anthropic社のCLIコーディングツール)やOpenAI Codexを使えば、ファイル管理やデバッグまで含めた一気通貫のEA開発が可能です。この記事のプロンプトはどのAIでも使えます。
RSIの売買条件を言語化する
まず、AIに伝えるために売買条件を日本語で明確にしましょう。
エントリー条件の例:
- 買いエントリー: RSI(14)が30以下から30を上抜けたとき
- 売りエントリー: RSI(14)が70以上から70を下抜けたとき
決済条件の例:
- 買いポジション決済: RSI(14)が70に到達
- 売りポジション決済: RSI(14)が30に到達
AIに伝えるプロンプト例
以下のプロンプトをChatGPT、Claude Code、Codexなどお好みのAIにコピペしてください。特にClaude Codeはターミナルから直接ファイルを作成できるため、.mq4ファイルの生成まで一発で完了します:
以下の条件でMT4のEA(MQL4)を作成してください。
【通貨ペア】USDJPY(ただし他の通貨ペアでも動作するように)
【時間足】1時間足
【エントリー条件】
- 買い: RSI(14)が前回のバーで30以下、かつ現在のバーで30を上回ったとき
- 売り: RSI(14)が前回のバーで70以上、かつ現在のバーで70を下回ったとき
【決済条件】
- 買いポジション: RSI(14)が70以上になったら決済
- 売りポジション: RSI(14)が30以下になったら決済
【ロット数】0.01ロット(パラメーターで変更可能に)
【損切り】50pips
【利確】100pips
マジックナンバーを使用して、このEA専用のポジション管理をしてください。
AIが生成したMQL4コード
上記プロンプトで生成されるコードの例です:
//+------------------------------------------------------------------+
//| RSI_CrossOver_EA.mq4 |
//+------------------------------------------------------------------+
#property strict
// パラメーター
input int RSI_Period = 14; // RSI期間
input double RSI_Lower = 30.0; // RSI下限
input double RSI_Upper = 70.0; // RSI上限
input double LotSize = 0.01; // ロットサイズ
input int StopLoss = 50; // 損切り(pips)
input int TakeProfit = 100; // 利確(pips)
input int MagicNumber = 12345; // マジックナンバー
int OnInit()
{
return(INIT_SUCCEEDED);
}
void OnTick()
{
double rsiCurrent = iRSI(NULL, 0, RSI_Period, PRICE_CLOSE, 0);
double rsiPrevious = iRSI(NULL, 0, RSI_Period, PRICE_CLOSE, 1);
// ポジション確認
int buyCount = 0, sellCount = 0;
for(int i = OrdersTotal() - 1; i >= 0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol())
{
if(OrderType() == OP_BUY) buyCount++;
if(OrderType() == OP_SELL) sellCount++;
}
}
}
// 買いエントリー
if(buyCount == 0 && rsiPrevious <= RSI_Lower && rsiCurrent > RSI_Lower)
{
double sl = Ask - StopLoss * Point * 10;
double tp = Ask + TakeProfit * Point * 10;
OrderSend(Symbol(), OP_BUY, LotSize, Ask, 3, sl, tp, "RSI Buy", MagicNumber);
}
// 売りエントリー
if(sellCount == 0 && rsiPrevious >= RSI_Upper && rsiCurrent < RSI_Upper)
{
double sl = Bid + StopLoss * Point * 10;
double tp = Bid - TakeProfit * Point * 10;
OrderSend(Symbol(), OP_SELL, LotSize, Bid, 3, sl, tp, "RSI Sell", MagicNumber);
}
// 買いポジション決済
if(buyCount > 0 && rsiCurrent >= RSI_Upper)
{
for(int i = OrdersTotal() - 1; i >= 0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() && OrderType() == OP_BUY)
OrderClose(OrderTicket(), OrderLots(), Bid, 3);
}
}
}
// 売りポジション決済
if(sellCount > 0 && rsiCurrent <= RSI_Lower)
{
for(int i = OrdersTotal() - 1; i >= 0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() && OrderType() == OP_SELL)
OrderClose(OrderTicket(), OrderLots(), Ask, 3);
}
}
}
}
バックテストのポイント
EAを作ったら、必ずバックテストで検証しましょう。
- MT4のストラテジーテスターでEAを選択
- 通貨ペア・期間を設定(まずは直近1年で試す)
- 「Every tick」モードで実行
- 結果のプロフィットファクター、最大ドローダウンを確認
まとめ
RSIのクロスオーバー条件をAIに伝えるだけで、本格的なEAが完成しました。ポイントは以下の3つです:
- 売買条件を日本語で明確に言語化する
- AIには具体的な数値とルールを伝える(ChatGPT、Claude Code、Codex いずれでもOK)
- 生成されたコードは必ずバックテストで検証する
次回は「MACDクロスのEA化」を解説します。複数インジケーターの組み合わせにも挑戦していきましょう。
関連記事
#RSI
#EA
#ChatGPT
#Claude Code
#Codex
#MQL4
#TradingView

