この記事でできるようになること
- 本スクール共通教材のサンプルEA「RSI_Reversal_Sample.mq4」が何をするEAかを説明できる
- input変数(外部パラメータ)の意味が分かり、自分で値を変えられる
- サンプルEAを自分のMT4に入れて、バックテストまで動かせる
サンプルEAの概要
本スクールの第4章以降では、RSI逆張りEA「RSI_Reversal_Sample.mq4」を共通教材として使います。「ChatGPTに作らせたコードがうまくいかない」ときの比較対象としても、「まず動くものを見てみたい」ときの練習台としても使えます。なお、MT4に標準で入っている「Moving Average」というEAとは別物です。
コードの置き場所: 4-1 MetaEditorで新規EAファイルを作る に全文があります。コードブロックの右上にある「コピー」ボタンを押すと、全文をまとめてコピーできます。
このEAのコードは、スクール全体で4-1の1か所だけに置いています。同じコードが何か所にもあると、修正したときに食い違いが起きるためです。手で範囲選択せず、必ずコピーボタンを使ってください。長いので、途中で切れるとコンパイルに失敗します。
このスクールが用意しているサンプルEAは、RSI逆張りの1本です。移動平均線クロスとボリンジャーバンド順張りは、3-3の実例プロンプトを使ってChatGPTに作ってもらってください。自分で作ったEAとこのサンプルを見比べることが、そのまま学習になります。
売買ルール
このEAは、第1章で学んだ「RSI」を使います。RSIは、買われすぎ・売られすぎの度合いを0〜100の数値で表す指標です。このEAは、下がりすぎたところで買い、上がりすぎたところで売る「逆張り」の考え方で動きます。
| 項目 | 内容 |
|---|---|
| 使う指標 | RSI 1本(初期値: 期間14本)。終値ベース。0〜100の数値で買われすぎ・売られすぎを表します |
| 買いエントリー | RSIが売られすぎの水準(初期値: 30)を上から下に割り込んだとき |
| 売りエントリー | RSIが買われすぎの水準(初期値: 70)を下から上に抜けたとき |
| 決済 | 利確(初期値: 50pips)、損切り(初期値: 30pips)。または反対側の水準に届いたら成行で決済(買いポジションはRSIが70以上、売りポジションはRSIが30以下)。数値はいずれも例です |
| 判定のタイミング | 確定足のみ。新しいローソク足ができた瞬間に、1本前と2本前の足のRSIを比べて、水準を抜けたかどうかを判定する |
| 同時ポジション数 | 1つまで。ポジションがあるときは新規エントリーしない |
| 通貨ペア・時間足 | コード内では固定していない。乗せたチャートの通貨ペア・時間足で動く。スクールではUSDJPY・H1を例にしている |
| 対応する業者 | 小数点3桁/5桁表示の業者(HFMを含む)でも、1pipsが正しく計算されるようにしてある |
input変数(外部パラメータ)の説明
このEAの設定値は、すべて input 変数になっています。コードを触らずに、MT4のEA設定画面「パラメーターの入力」タブ、またはストラテジーテスターの「エキスパート設定」から変更できます。
| 変数名 | 初期値 | 意味 | 変えるときの注意 |
|---|---|---|---|
| 売買ルール | |||
| RSIPeriod | 14 | RSIの期間(本数) | 2以上にする。第6章の最適化で調整する対象。初期値の14は一般的な設定の一例です |
| BuyLevel | 30 | この値を下回ったら買い(売られすぎの水準) | SellLevelより小さい値にする。小さくするほどエントリー回数は減る目安です |
| SellLevel | 70 | この値を上回ったら売り(買われすぎの水準) | BuyLevelより大きい値にする(0〜100の範囲)。大きくするほどエントリー回数は減る目安です |
| TakeProfitPips | 50 | 利確の幅(pips) | 0にすると利確なし(反対側の水準に届いたときだけ決済)。初期値はあくまで例 |
| StopLossPips | 30 | 損切りの幅(pips) | 0にすると損切りなし。0にしないことを強くおすすめします |
| 注文の設定 | |||
| Lots | 0.1 | 1回の注文のロット数 | リアル口座では0.01(最小ロット)に変える(7-2)。入金額もあわせて考えること |
| SlippagePips | 1.0 | 許容するスリッページ(pips) | ポイントではなくpipsで指定します。「off quotes」「requote」が頻発する場合だけ広げる(例: 2.0) |
| MaxSpreadPips | 3.0 | この幅を超えたら新規注文しない(pips) | 指標発表時などの異常なスプレッドで発注しないための安全装置。0にすると無制限 |
| MagicNumber | 12345 | このEAの注文を見分ける番号 | 同じ口座で複数のEAを動かすときは、EAごとに違う番号にする |
| 安全装置 | |||
| MaxRetry | 3 | 注文が失敗したときの再試行回数 | 基本は変更不要。0にすると1回失敗しただけで諦めます |
| RetryWaitMs | 700 | 再試行までの待ち時間(ミリ秒) | 基本は変更不要 |
| ExpectedTFMin | 60 | 想定する時間足(分) | 違う時間足のチャートに乗せると、ログで知らせます。動作は止めません。0で確認なし |
| ShowLog | true | 「エキスパート」タブに動作ログを出す | trueのままを推奨。うまく動かないときの原因調査に使います |
「変えるときの注意」にあるように、最初に変えるのはLotsだけで十分です。他の値は第6章の改善サイクルの中で、1回に1つずつ変えていきます。
使い方(3ステップ)
ステップ1 MetaEditorに貼り付けて保存する
- 4-1 を開き、コードブロック右上の「コピー」ボタンで全文をコピーする
- MT4で[F4]を押してMetaEditorを開く
- 「新規作成」→「エキスパートアドバイザ(テンプレート)」→ 名前を「RSI_Reversal_Sample」にして進む(4-1と同じ)
- 自動生成されたコードを全消しして、コピーしたコードを貼り付ける
- [Ctrl]+[S]で保存する
すでに4-1でこのEAを作成・保存している場合、この付録の手順をもう一度行う必要はありません。MetaEditorのファイル一覧から開けば、そのまま使えます。
ステップ2 コンパイルする
[F7]を押します。下部の「エラー」タブが「0 error(s), 0 warning(s)」になれば成功です要確認。エラーが出た場合は、コピーが途中で切れていないか(最後の行まで貼れているか)を確認してください。それでも直らない場合は付録Cへ。
ステップ3 バックテストで動作を確認する
[Ctrl]+[R]でストラテジーテスターを開き、5-2の手順で設定します。例として次の設定で動かすと、結果が出ることを確認できます(数値はあくまで例で、この設定で利益が出ることを示すものではありません)。
| 設定項目 | 例 |
|---|---|
| エキスパートアドバイザ | RSI_Reversal_Sample |
| 通貨ペア | USDJPY |
| 時間足 | H1 |
| モデル | 全ティック |
| 期間 | 直近1〜2年 |
| スプレッド | 20(ポイント)に固定する。「現在値」はテストのたびに結果が変わるので使わない |
| 初期証拠金 | 1,000,000(通貨はJPY)。5-2の設定と揃えています |
結果の読み方は5-3、疑う視点は5-4を参照してください。
このEAに入っている安全装置
バックテストでは表に出ませんが、実際の口座では「注文が通らない」ことが頻繁に起きます。このサンプルEAには、その対策が組み込んであります。ChatGPTに自分のEAを作らせるときも、同じ指示を出してください(付録B)。
| 入れてある対策 | 入れないとどうなるか |
|---|---|
| 損切り・利確を業者の最小距離に合わせる | 注文が error 130 で失敗し続ける |
| それでも失敗したら、注文だけ先に出して後から損切りを付ける | 約定方式によっては1回も注文できない |
| ロット数を口座の最小・刻み幅に合わせる | error 131 で失敗する |
| 証拠金が足りるか事前に確認する | error 134 で失敗する |
| 発注直前に価格を取り直す | error 129 や error 138(リクオート)が増える |
| 失敗の種類を見て最大3回まで再試行する | 1回の失敗でそのシグナルを取り逃がし、「動いているのに取引しない」状態になる |
| スプレッドが広すぎるときは発注しない | 指標発表時に不利な価格で約定する |
| EAを乗せた直後に過去のシグナルで発注しない | 稼働初日に、バックテストにない取引が1回発生する |
| 自動売買の許可と接続を確認する | 原因が分からないまま取引されない |
うまく動かないときは、まず「エキスパート」タブのログを見てください。このEAは見送った理由も日本語で記録します。
このEAをどう活用するか
- ChatGPTに作らせたEAと比べる: 3-3の実例2(RSI逆張り)のプロンプトでChatGPTに作らせたコードと、このサンプルを見比べると「AIが省略した部分」「違う書き方をした部分」に気づけます
- 改善の練習台にする: 第6章の「時間帯フィルター追加」「トレーリングストップ追加」を、まずこのサンプルで試すと安全です
- 説明してもらう: 付録Bの「5. コードの内容を説明してもらうプロンプト」にこのコードを貼ると、各部分が何をしているか日本語で読めます
このサンプルEAは学習用です。特定の通貨ペア・期間・設定で利益が出ることを保証するものではありません。実際の運用はバックテスト → デモ → 少額リアルの順を守ってください(第7章)。