MT4の使い方

iRSIとは|MQL4でRSIを取得する基本とサンプルコード

投資リスクについて

投資は自己責任であり、過去の成績は将来の利益を保証しません。本記事は投資助言ではありません。売買の判断は各自の責任において行ってください。

本記事は投資助言ではありません。公式ページで最新条件を確認してください。

はじめに:このサンプルの前提

この記事では、MQL4 の iRSI() を使って RSI の値を取得する基本を整理します。扱うのは「値を取り出して確認する」ところまでで、売買ロジックやEAの完成コードには踏み込みません。サンプルは OnTick() を使うため、学習用EAとして確認しますが、発注処理や売買条件は含めません。

サンプルコードは学習用・検証用です。実運用や利益を保証するものではありません。売買タイミング・銘柄・ロット数を推奨するものでもありません。実口座で使用する前提ではなく、デモ環境または検証環境で確認してください。MT4のビルドやブローカー環境により、表示や動作が異なる場合があります。

iRSIとは

iRSI() は、MQL4で相対力指数(RSI)の値を取得するための組み込み関数です。チャートに売買サインを出すものではなく、値を返すだけです。

  • 現在や過去の足のRSI値を取得する
  • Print()Comment() で確認する
  • 検証用スクリプトや自作ロジックの材料にする

iRSIの基本構文

double iRSI(
   string symbol,
   int    timeframe,
   int    period,
   int    applied_price,
   int    shift
);
引数意味
symbol通貨ペア。NULL で現在のチャートNULL
timeframe時間足。0 で現在の時間足0
periodRSIの計算期間14
applied_priceどの価格を使うかPRICE_CLOSE
shiftどの足の値を読むか0, 1

iRSI()iMA() と違って ma_shift がありません。applied_price の位置も含めて、引数の並びをそのまま覚えておくと混乱しにくくなります。

最小サンプルコード

ここでは、現在のチャートで期間14のRSIを取得し、値を確認するだけのサンプルを示します。

#property strict

void OnTick()
{
   double rsi = iRSI(NULL, 0, 14, PRICE_CLOSE, 0);
   Print("RSI(14) = ", rsi);
   Comment("RSI(14) = ", rsi);

   // 補足: 条件分岐のログ出力のみ
   if(rsi > 70)
      Print("RSI is above 70");

   if(rsi < 30)
      Print("RSI is below 30");
}

このコードは「値を取得して表示するだけ」のものです。if 文はあくまでログ出力の補足で、売買条件やエントリー条件ではありません。

サンプルコードの見方

  • iRSI(NULL, 0, 14, PRICE_CLOSE, 0) は、現在のチャート基準のRSIを読む指定です。
  • 最後の引数 0shift で、現在形成中の足を指します。
  • OnTick() は価格更新ごとに動くため、ログが多くなる点に注意してください。

コンパイル前に確認すること

  • このサンプルは OnTick() を使うため、MQL4 → Experts に保存しているか
  • メタエディターで開き、コンパイル(F7)してエラーが 0 件になっているか
  • 引数の数と順番が構文どおりか
  • セミコロンや関数名のスペルミスがないか

iRSIの値がうまく取得できないときの確認点

  • ヒストリカルデータが足りていないと、正しい値が出ないことがあります。データ量が不足している場合は MT4のヒストリカルデータを確認・補充する手順 を確認してください。
  • period の指定が意図と違っていないかを確認する
  • applied_price の位置が想定と違っていないかを確認する
  • shift がずれていないかを確認する

取得した値を検証で使いたい場合は、MT4でEAをバックテストする手順 も参考になります。前後差の見方を整理したい場合は バックテストとフォワードテストの違い も役立ちます。

iRSIを使うときに誤解しやすいこと

  • period は RSI の期間数です。
  • applied_price の位置は iMA() と同じではありません。
  • iRSI() はチャートに売買シグナルを出す関数ではありません。
  • if(rsi > 70)if(rsi < 30) は、ここではログ出力の例です。

FAQ

Q. iRSIはRSIの値そのものを表示する関数ですか?
A. いいえ。iRSI() は RSI の値を返す関数で、チャートにサインを描くものではありません。

Q. RSIが70なら売り と考えてよいですか?
A. この記事では売買推奨として扱いません。if(rsi > 70) のような記述は、値の確認用のログ出力として示しています。

Q. periodshift は何が違いますか?
A. period は RSI の計算期間、shift はどの足の値を読むかです。

Q. コンパイルできない場合はどこを見ればよいですか?
A. メタエディターのエラー表示を確認し、引数の数・順番、セミコロンの抜け、関数名のスペルを見直してください。MT4のビルドやブローカー環境により、表示や動作が異なる場合があります。

まとめ

  • iRSI() は値を返す関数で、チャートにサインを描くものではない
  • 引数は symbol / timeframe / period / applied_price / shift の順
  • applied_price の位置は iMA() と違うので注意する
  • if(rsi > 70)if(rsi < 30) はログ出力の補足であり売買推奨ではない

まずは値を取得して Print()Comment() で確認するところから始めると、iRSI() の挙動を理解しやすくなります。サンプルコードは学習用・検証用です。

関連

関連記事

MT4の使い方 MT4にログインできない原因と対処法|口座番号・サーバー・パスワードの確認手順 MT4でログインできないときに確認すべき7つの原因と対処手順を解説します。口座番号の入力ミス、パスワード種別の違い、サーバー名の間違い、デモ口座とリアル口座の混同、インターネット接続などのよくある原因を順番に切り分けて解決できるよう整理しました。 MT4の使い方 MT4がアップデート待機中になる原因と解決法|チャートが動かないときの確認手順 MT4のチャートに「アップデート待機中」と表示されて動かないときの原因6パターンと対処手順を解説します。通貨ペアの気配値設定、銘柄サフィックスの違い、最大バー数、ヒストリカルデータ不足などを段階的に確認し、原因を切り分けて解決できるよう整理しました。 MT4の使い方 MT4の回線不通・接続エラーの原因と対処法|接続状態の確認手順 MT4の右下に「回線不通」と表示されてチャートが止まるときの原因7パターンと確認手順を解説します。インターネット回線、サーバー設定、ファイアウォール、VPS接続、ブローカー側の障害などをステップごとに切り分けて解決できるよう整理しました。