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 |
| period | RSIの計算期間 | 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を読む指定です。- 最後の引数
0がshiftで、現在形成中の足を指します。 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. period と shift は何が違いますか?
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() の挙動を理解しやすくなります。サンプルコードは学習用・検証用です。