AI EA スクール
0記事中 0記事 読了
カリキュラム 第3章 ChatGPTの準備とプロンプト プロンプトの書き方と実例
3-3

プロンプトの書き方と実例

読み終わるまでの目安 約25分

この記事でできるようになること

  • EA作成プロンプトの「基本形」が分かり、仕様シートから組み立てられる
  • 3種類の実例(移動平均線クロス/RSI逆張り/ボリンジャーバンド順張り)をそのまま使える
  • コードを省略させずに、1ファイルで出力させるコツが分かる

準備するもの

  • 前の記事で書いた仕様シート
  • ChatGPTにログインしたブラウザ

手順

手順1 プロンプトの基本形を知る

プロンプトとは、AIへの指示文のことです。EA作成のプロンプトは、次の4つのブロックを上から順に並べるだけです。

順番 ブロック 書くこと
1 役割 「あなたはMQL4のプロのプログラマーです」と最初に宣言する
2 環境 MT4で動くこと、言語はMQL4であること(MQL5ではない)
3 仕様 前の記事の7項目(買い・売りを分けて8行)
4 出力の条件 省略しない、後で変えたい数値はinput変数にする、日本語で説明をつける、など

「役割」と「環境」は毎回同じ文章でかまいません。変わるのは「仕様」だけです。「出力の条件」も基本は固定の文章で、EAに応じて「input変数(後からMT4の画面で変えられる設定値)にしたい項目」を書き換える程度です。

ここに画面写真を入れてください図: プロンプトの4ブロック構成(役割→環境→仕様→出力の条件)を示した図3-3-01.png

手順2 良い例と悪い例を見比べる

同じ「移動平均線クロスのEA」を頼むにしても、書き方で返ってくるものは大きく変わります。

悪い例:

移動平均線のクロスで売買するEAを作って。

この頼み方だと、AIは足りない情報を勝手に補います。通貨ペアも損切りも指定していないので、損切りなしのEAが返ってきたり、MT4では動かないMQL5のコードが返ってきたりします。

良い例(骨組みだけ):

あなたはMQL4のプロのプログラマーです。
MT4で動くEAをMQL4で作成してください(MQL5の文法は使わないでください)。
仕様: USDJPY・1時間足。短期MA(20)が長期MA(50)を上抜けで買い、下抜けで売り。利確50pips、損切り30pips。0.1ロット固定。同時1ポジション。マジックナンバー12345。
コードは省略せず、1ファイルの完全な形で出力してください。

違いは3つです。

  1. 環境(MT4・MQL4)を明記している
  2. 数値がすべて入っている
  3. 出力の形(省略しない・1ファイル)を指定している

この良い例を、誰でも書き換えやすいように整理したものが、次の実例1です。

手順3 実例1: 移動平均線クロスEA(基本の雛形)

これがこのスクールの基本プロンプトです。【 】の中だけ書き換えれば、どんなEAにも使えます。まずはこのまま使ってください。

あなたはMQL4のプロのプログラマーです。
MetaTrader 4(MT4)で動くEA(エキスパートアドバイザ)を作成してください。

【環境】
- プラットフォーム: MT4
- 言語: MQL4(MQL5の文法は使わないでください)

【仕様】
1. 通貨ペア・時間足: 【USDJPY・1時間足】
2. 買いエントリー条件: 【短期移動平均線(20)が長期移動平均線(50)を下から上に抜けたとき】
3. 売りエントリー条件: 【短期移動平均線(20)が長期移動平均線(50)を上から下に抜けたとき】
4. 決済条件: 【利確 50pips、損切り 30pips。反対のクロスが出たら成行で決済】
5. ロット数: 【0.1ロット固定】
6. 同時ポジション数: 【1つまで】
7. 取引時間帯: 【制限なし】
8. マジックナンバー: 【12345】

【出力の条件】
- コードは省略せず、1ファイルの完全な形で出力してください
- 移動平均の期間、利確・損切り幅、ロット数は input 変数にして、後から変更できるようにしてください
- 4本値の確定足で判定してください(ヒゲでの誤判定を防ぐため)
- コードの後に、各部分が何をしているかを初心者向けに日本語で簡単に説明してください

「4本値の確定足で判定」というのは、ローソク足が完成してから判定する、という意味です。形成中の足で判定すると、一瞬だけ条件を満たしてすぐ戻る「だまし」で無駄な注文が増えるため、こう書いておきます。この一文は毎回入れてください。

このプロンプトの仕様は、第4章で使うサンプルEA「MA_Cross_Sample.mq4」と同じ内容です。AIの回答がサンプルと少し違うコードになっても心配いりません。書き方は毎回変わりますが、動作が同じになるように指示しているからです。

ここに画面写真を入れてくださいChatGPTの入力欄に実例1のプロンプトを貼り付けた画面3-3-02.png

手順4 実例2: RSI逆張りEA

RSIは「買われすぎ・売られすぎ」を0〜100で表す指標で、一般に30以下が売られすぎ、70以上が買われすぎとされます。逆張りとは、下がりすぎたところで買い、上がりすぎたところで売る考え方です。

実例1と違うのは【仕様】の中身と、input変数にする項目だけです。役割・環境・出力の条件はそのまま流用しています。

あなたはMQL4のプロのプログラマーです。
MetaTrader 4(MT4)で動くEA(エキスパートアドバイザ)を作成してください。

【環境】
- プラットフォーム: MT4
- 言語: MQL4(MQL5の文法は使わないでください)

【仕様】
1. 通貨ペア・時間足: 【USDJPY・1時間足】
2. 買いエントリー条件: 【RSI(14)が30を下から上に抜けたとき】
3. 売りエントリー条件: 【RSI(14)が70を上から下に抜けたとき】
4. 決済条件: 【利確 40pips、損切り 30pips。買いポジションはRSI(14)が50を上回ったら、売りポジションはRSI(14)が50を下回ったら成行で決済】
5. ロット数: 【0.1ロット固定】
6. 同時ポジション数: 【1つまで】
7. 取引時間帯: 【制限なし】
8. マジックナンバー: 【12346】

【出力の条件】
- コードは省略せず、1ファイルの完全な形で出力してください
- RSIの期間、買いと売りのしきい値(30と70)、利確・損切り幅、ロット数は input 変数にして、後から変更できるようにしてください
- 4本値の確定足で判定してください(ヒゲでの誤判定を防ぐため)
- コードの後に、各部分が何をしているかを初心者向けに日本語で簡単に説明してください

マジックナンバーは実例1と変えています(12346)。同じMT4で2つのEAを動かしたときに、お互いの注文を区別するためです。

ここに画面写真を入れてくださいChatGPTに実例2を送信し、コードが返ってきた画面3-3-03.png

手順5 実例3: ボリンジャーバンド順張りEA

ボリンジャーバンドは、移動平均線の上下に「値動きの幅」を示す線(バンド)を引いた指標です。順張りは、勢いが出た方向についていく考え方で、ここでは「終値が上のバンドを超えて確定したら買い、下のバンドを割って確定したら売り」というルールにします。

あなたはMQL4のプロのプログラマーです。
MetaTrader 4(MT4)で動くEA(エキスパートアドバイザ)を作成してください。

【環境】
- プラットフォーム: MT4
- 言語: MQL4(MQL5の文法は使わないでください)

【仕様】
1. 通貨ペア・時間足: 【USDJPY・1時間足】
2. 買いエントリー条件: 【ボリンジャーバンド(期間20、偏差2)の上バンドを、終値が上回って確定したとき】
3. 売りエントリー条件: 【ボリンジャーバンド(期間20、偏差2)の下バンドを、終値が下回って確定したとき】
4. 決済条件: 【利確 60pips、損切り 30pips。買いポジションは終値がミドルバンド(中央の移動平均線)を下回って確定したら、売りポジションは終値がミドルバンドを上回って確定したら成行で決済】
5. ロット数: 【0.1ロット固定】
6. 同時ポジション数: 【1つまで】
7. 取引時間帯: 【制限なし】
8. マジックナンバー: 【12347】

【出力の条件】
- コードは省略せず、1ファイルの完全な形で出力してください
- ボリンジャーバンドの期間と偏差、利確・損切り幅、ロット数は input 変数にして、後から変更できるようにしてください
- 4本値の確定足で判定してください(ヒゲでの誤判定を防ぐため)
- コードの後に、各部分が何をしているかを初心者向けに日本語で簡単に説明してください

3つの実例を並べると、変わっているのは仕様の8行と、input変数の指定だけだと分かります。自分のEAを作るときも、この2か所を仕様シートから書き換えるだけです。

なお、これらの実例は「プロンプトの書き方」を示すためのもので、この設定で利益が出ることを示すものではありません。成績は第5章のバックテストで確かめます。

ここに画面写真を入れてくださいChatGPTに実例3を送信し、コードが返ってきた画面3-3-04.png

手順6 コードを省略させないコツ

AIは長いコードを出すとき、途中を「// 以下同様」「// …省略」のように省くことがあります。省かれたコードはコンパイル(第4章)できないので、次の4つを毎回守ってください。

  1. 「省略せず、1ファイルの完全な形で」を必ず書く(雛形には入っています)
  2. 「MT4で」「MQL4で」を毎回書く(書かないとMQL5の書き方が混ざります)
  3. 1回のやりとりで頼むのは、1つのEA・1つの変更だけ
  4. それでも途中で切れたら、「続きを出力して」ではなく「最初から最後まで、省略せずにもう一度出力してください」と頼む(続きだけもらうと、つなぎ目でミスが起きやすいです)
ここに画面写真を入れてください「// 以下同様」と省略された回答の例に印をつけた画面3-3-05.png

手順7 ChatGPTに送信する

  1. ChatGPTを開き、サイドバーの「新しいチャット」を押して、まっさらな会話を始めます。要確認 前の会話が混ざると、以前の指示に引きずられることがあります。
  2. 実例1のプロンプトをコピーして、入力欄に貼り付けます。改行はそのまま保たれます。
  3. 送信します([Enter] または送信ボタン)。
  4. 数十秒待つと、コードと日本語の解説が返ってきます。

返ってきたコードをどう受け取るかは、次の記事で説明します。ここでは「送信できて、何か返ってきた」ところまでで大丈夫です。

ここに画面写真を入れてください実例1を送信して、ChatGPTがコードを出力し終えた画面全体3-3-06.png

つまずきポイント

  • 【 】を残したまま送ってしまった: 【 】は「ここを書き換える」印です。残したままでもAIはだいたい理解しますが、送るときは【 】ごと自分の値に置き換えるのが確実です(「【USDJPY・1時間足】」→「USDJPY・1時間足」)。
  • MQL5のコードが返ってくる: 「MT4」「MQL4」が抜けていないか確認し、「MQL4で書き直してください」と返します。見分け方は第4章で説明します。
  • 途中で出力が止まる: 無料プランの制限か、出力が長すぎるのが原因です。「最初から省略せずにもう一度」と頼むか、少し時間をおいてから再送します。
  • 英語の解説が返ってくる: 「解説は日本語で」と一言添えてください。
  • 自分の戦略を入れたら、AIから質問で返された: 仕様があいまいなサインです。「〜のとき」と数値で書けているか、仕様シートに戻って見直します。

次の記事

次は、返ってきたコードと解説の受け取り方(コピーの仕方、分からない部分の聞き返し方)を説明します。