1. MQL5のiRSIとは何か
MQL5の iRSI は、MetaTrader 5で標準搭載されている RSI(Relative Strength Index) をプログラムから利用するための関数です。
ただし、初心者が最初につまずきやすい重要点があります。iRSI は RSIの数値そのものを直接返す関数ではありません。返るのは インジケーターハンドル です。これは「そのRSIを操作するための識別子」のようなもので、実際のRSI値は別途 CopyBuffer() で取得します。MetaQuotes公式ドキュメントでも、iRSI はRSIインジケーターのハンドルを返し、RSIは1本のバッファを持つと説明されています。(MQL5)
1.1 RSI(Relative Strength Index)とは
RSIは、相場が 買われすぎ か 売られすぎ かを判定する際によく使われるテクニカル指標です。一般的には 0〜100 の範囲で動き、たとえば次のように使われることが多いです。
- 70以上:買われすぎの目安
- 30以下:売られすぎの目安
ただし、この数値は絶対ではありません。強いトレンド相場では、70以上や30以下に長く張り付くこともあります。したがって、RSIは「単独で万能」ではなく、相場状況の補助判断として使うのが実務的です。
1.2 MQL5でRSIを扱う方法
MQL5では、RSIを使う基本手順は次の2段階です。
iRSI()でRSIインジケーターのハンドルを作成するCopyBuffer()でRSIの計算結果を配列へコピーする
この構造は、MQL4経験者ほど違和感を持ちやすい部分です。MQL5では、標準インジケーターをそのまま数値で受け取る設計ではなく、まずハンドルを作り、そのハンドル経由で値を読む仕組みになっています。公式ドキュメントでも、CopyBuffer() は指定したインジケーターのバッファから必要本数のデータを取得する関数として説明されています。(MQL5)
1.3 iRSI関数の役割
iRSI の役割は、RSIを「使える状態に初期化すること」です。
たとえば、現在の通貨ペア・現在の時間足・期間14・終値ベースのRSIを使いたい場合、概念的には次のような処理になります。
int rsi_handle = iRSI(_Symbol, _Period, 14, PRICE_CLOSE);
ここで得られる rsi_handle は、RSIの最新値ではありません。
このあとで CopyBuffer(rsi_handle, 0, 0, 3, rsi_array); のようにして、はじめてRSI値を配列へ取り出せます。
初心者が特につまずきやすい点は次の3つです。
iRSI()の戻り値を、そのままRSI値だと思ってしまうCopyBuffer()を使わずに売買条件を書こうとする- ハンドル作成失敗時に
INVALID_HANDLEの確認をしない
この3点を最初に理解しておくと、以降の実装で混乱しにくくなります。
また、公式仕様では applied_price に価格種別だけでなく「別インジケーターのハンドル」を渡せるケースもありますが、初心者段階ではまず PRICE_CLOSE を使う理解で十分です。(MQL5)
2. iRSI関数の基本構文
MQL5でRSIを利用するには、まず iRSI() 関数を使って RSIインジケーターのハンドル(識別子) を作成します。
このハンドルを使って CopyBuffer() でRSI値を取得するのが、MQL5における標準的なインジケーター取得パターンです。
重要なポイントは次の通りです。
iRSI()は RSIの値ではなくハンドルを返す- RSIの実際の値は CopyBufferで取得する
- ハンドル作成は通常 OnInit() 内で1回だけ行う
この構造は iMA(移動平均)や iATR など、他の標準インジケーターでも共通です。
そのため、ここで仕組みを理解しておくと、MQL5のインジケーター処理全体が理解しやすくなります。
2.1 iRSIの関数構文
iRSI() の基本構文は次の通りです。
int iRSI(
string symbol,
ENUM_TIMEFRAMES period,
int ma_period,
ENUM_APPLIED_PRICE applied_price
);
戻り値
- int型(インジケーターハンドル)
成功時
- ハンドル番号が返る
失敗時
INVALID_HANDLE
2.2 各パラメータの意味
iRSI() には4つの引数があります。
それぞれの役割を理解しておくと、EA開発での応用が簡単になります。
| パラメータ | 内容 |
|---|---|
| symbol | 通貨ペア |
| period | 時間足 |
| ma_period | RSI期間 |
| applied_price | RSI計算に使う価格 |
symbol
対象の通貨ペアを指定します。
例
EURUSD
現在のチャートを使う場合
_Symbol
初心者は _Symbol を使うのが一般的 です。
period
時間足を指定します。
例
PERIOD_M1
PERIOD_M5
PERIOD_H1
PERIOD_D1
現在のチャート時間足
_Period
ma_period
RSIの計算期間です。
代表例
| 値 | 用途 |
|---|---|
| 14 | 最も一般的 |
| 9 | 短期 |
| 21 | 中期 |
多くのEAでは 14が初期設定 です。
applied_price
RSI計算に使用する価格です。
主な種類
| 値 | 意味 |
|---|---|
| PRICE_CLOSE | 終値 |
| PRICE_OPEN | 始値 |
| PRICE_HIGH | 高値 |
| PRICE_LOW | 安値 |
| PRICE_MEDIAN | 中央値 |
最も一般的なのは
PRICE_CLOSE
です。
2.3 戻り値(インジケーターハンドル)
iRSI() の戻り値は RSIの数値ではありません。
これは初心者が最も間違えやすい部分です。
例
int rsiHandle = iRSI(_Symbol,_Period,14,PRICE_CLOSE);
この rsiHandle は
- RSIインジケーターの識別子
- データ取得のためのハンドル
です。
実際のRSI値は次のように取得します。
double rsi[];
CopyBuffer(rsiHandle,0,0,3,rsi);
この rsi[0] が最新RSI値です。
よくある失敗
初心者が特にやりがちなミスです。
1 RSI値と勘違いする
間違い例
double rsi = iRSI(...);
これは 完全に誤り です。
2 INVALID_HANDLEのチェックをしない
安全なコード
if(rsiHandle == INVALID_HANDLE)
{
Print("RSI handle creation failed");
}
3 OnTickで毎回作る
NG例
OnTick()
{
int rsi = iRSI(...);
}
これは 無駄な負荷 を生みます。
正しい方法
OnInit()で作る
重要な理解
MQL5インジケーター取得は基本的に次の流れになります。
インジケーターハンドル作成
↓
CopyBuffer
↓
配列へ格納
↓
値を参照
この構造は MQL5の最重要パターン です。
3. iRSIの基本サンプルコード(RSI値を取得する)
MQL5でRSIを実際に利用するには、次の3ステップで処理を構築します。
iRSI()でインジケーターハンドルを作成するCopyBuffer()でRSIデータを配列へコピーする- 配列からRSI値を参照する
この流れは MQL5のすべての標準インジケーターで共通です。
したがって、このパターンを理解すれば iMA、iATR、iMACD なども同じ方法で扱えるようになります。
3.1 最小構成のRSI取得コード
まずは、EA内でRSIを取得する 最もシンプルな例 を示します。
int rsiHandle;
double rsiBuffer[];
int OnInit()
{
rsiHandle = iRSI(_Symbol, _Period, 14, PRICE_CLOSE);
if(rsiHandle == INVALID_HANDLE)
{
Print("RSI handle creation failed");
return(INIT_FAILED);
}
return(INIT_SUCCEEDED);
}
void OnTick()
{
if(CopyBuffer(rsiHandle,0,0,3,rsiBuffer) <= 0)
{
Print("RSI data copy failed");
return;
}
double rsiCurrent = rsiBuffer[0];
Print("RSI = ", rsiCurrent);
}
このコードの動作は次の通りです。
- EA起動時 (
OnInit)- RSIインジケーターを生成
- ティック更新 (
OnTick)- 最新RSI値を取得
- ログに出力
3.2 CopyBufferの意味
CopyBuffer() は、インジケーターの計算結果を配列にコピーする関数です。
基本構文
CopyBuffer(handle, buffer_index, start_pos, count, array);
パラメータの意味
| 引数 | 内容 |
|---|---|
| handle | インジケーターハンドル |
| buffer_index | バッファ番号 |
| start_pos | 取得開始位置 |
| count | 取得本数 |
| array | 格納配列 |
RSIの場合
CopyBuffer(rsiHandle,0,0,3,rsiBuffer);
意味
| 値 | 内容 |
|---|---|
| 0 | RSIはバッファ1本 |
| 0 | 最新バー |
| 3 | 最新3本取得 |
3.3 RSI配列の読み方
CopyBuffer() で取得した配列は、次の順序になります。
| 配列 | 意味 |
|---|---|
| rsiBuffer[0] | 最新RSI |
| rsiBuffer[1] | 1本前 |
| rsiBuffer[2] | 2本前 |
例
double rsiCurrent = rsiBuffer[0];
double rsiPrev = rsiBuffer[1];
EAでは、通常次のような判定に使います。
if(rsiCurrent > 70)
{
Print("Overbought");
}
if(rsiCurrent < 30)
{
Print("Oversold");
}
3.4 よくある失敗
初心者が特につまずきやすいポイントです。
① CopyBufferを呼ばない
間違い例
double rsi = rsiHandle;
ハンドルは RSI値ではありません。
② 配列サイズを確保しない
配列は自動拡張されることが多いですが、安全のため
ArraySetAsSeries(rsiBuffer,true);
を使う場合もあります。
③ データ取得失敗をチェックしない
安全コード
if(CopyBuffer(rsiHandle,0,0,3,rsiBuffer) <= 0)
{
Print("CopyBuffer failed");
}
特に
- インジケーター初期化直後
- ヒストリーデータ不足
などで失敗することがあります。
3.5 実務EAでの基本構造
実際のEAでは、RSI取得処理は次の構造になることが多いです。
OnInit
└ インジケーターハンドル生成
OnTick
└ CopyBuffer
└ RSI取得
└ 売買判定
この設計は MT5 EA開発の基本パターンです。
4. RSIを使った売買ロジック(EA実装例)
RSIは、EA(自動売買プログラム)で エントリー条件の判定 によく使われるテクニカル指標です。
特に代表的なのが、次の2つのロジックです。
- 買われすぎ / 売られすぎ判定
- RSIのクロス判定
RSI単体でも売買ロジックを構築できますが、実務では トレンド系インジケーターと組み合わせることが多い です。
ここではまず、最も基本となるRSIロジックの実装例を解説します。
4.1 売られすぎ・買われすぎロジック
RSIの基本的な使い方は次の通りです。
| RSI値 | 状態 |
|---|---|
| 70以上 | 買われすぎ |
| 30以下 | 売られすぎ |
これをEAのエントリー条件にすると、例えば次のようになります。
買い条件
- RSI < 30
売り条件
- RSI > 70
4.2 RSIを使った売買判定コード
次のコードは、RSI値を取得し売買シグナルを判定する基本例です。
double rsiCurrent = rsiBuffer[0];
if(rsiCurrent < 30)
{
Print("BUY SIGNAL");
}
if(rsiCurrent > 70)
{
Print("SELL SIGNAL");
}
この例では、RSIの状態をログ出力しています。
実際のEAでは、この部分に 注文処理(OrderSend) を追加します。
4.3 RSIクロス戦略
RSIでは、閾値をクロスしたタイミング を売買シグナルにすることも多いです。
例
買いシグナル
- RSIが30を下から上へ突破
売りシグナル
- RSIが70を上から下へ突破
これをコードにすると次のようになります。
double rsiCurrent = rsiBuffer[0];
double rsiPrev = rsiBuffer[1];
if(rsiPrev < 30 && rsiCurrent >= 30)
{
Print("BUY SIGNAL");
}
if(rsiPrev > 70 && rsiCurrent <= 70)
{
Print("SELL SIGNAL");
}
この方法は、単純な閾値判定より ダマシ(誤シグナル)を減らしやすい という特徴があります。
4.4 EAへ組み込む基本例
RSIを使った最小構成のEAロジック例です。
if(CopyBuffer(rsiHandle,0,0,2,rsiBuffer) <= 0)
return;
double rsiCurrent = rsiBuffer[0];
double rsiPrev = rsiBuffer[1];
if(rsiPrev < 30 && rsiCurrent >= 30)
{
Print("BUY CONDITION");
}
if(rsiPrev > 70 && rsiCurrent <= 70)
{
Print("SELL CONDITION");
}
この部分に注文処理を追加すれば、RSIベースのEAが完成します。
4.5 RSIロジックの注意点
RSIは便利ですが、初心者が誤解しやすい点があります。
① RSIだけでは勝てない
RSIは 逆張り系インジケーター です。
強いトレンドでは、次の状態が長く続きます。
- RSI > 70 が継続
- RSI < 30 が継続
この状態で逆張りすると 連続損失になりやすい です。
② トレンド相場では機能しにくい
RSIはレンジ相場では有効ですが、
トレンド相場では次の対策が必要です。
例
- 移動平均フィルター
- トレンド判定
- ATRフィルター
③ RSI期間の調整
RSI期間を変えると性質が大きく変わります。
| RSI期間 | 特徴 |
|---|---|
| 9 | シグナル多い |
| 14 | 標準 |
| 21 | ノイズ少ない |
EAでは 最適化(Optimization) を行うことが一般的です。
4.6 実務EAでよく使われるRSI戦略
RSIは次のような組み合わせで使われることが多いです。
代表的な組み合わせ
- RSI + 移動平均
- RSI + ボリンジャーバンド
- RSI + ATR
- RSI + トレンドフィルター
単体より フィルター付きロジックの方が安定しやすい 傾向があります。
ただし最終的な結果は
- 通貨ペア
- 時間足
- 市場状況
によって変わるため、必ずバックテストで確認する必要があります。
5. iRSI使用時によく発生するエラーと対処法
iRSI は構文自体はシンプルですが、実際にEAへ組み込むと 「ハンドルは作れたのに値が取れない」、「配列エラーが出る」、「想定したRSIにならない」 といった問題が起こりやすいです。
原因の多くは、iRSI そのものではなく MQL5のインジケーター取得の流れ を正しく実装できていないことにあります。公式ドキュメントでも、iRSI はハンドルを返し、失敗時は INVALID_HANDLE を返すとされています。(MQL5)
5.1 ハンドル作成に失敗する
最初に確認すべきなのは、iRSI() の戻り値です。
成功した前提で処理を進めると、その後の CopyBuffer() も連鎖的に失敗します。
基本形は次の通りです。
int rsiHandle = iRSI(_Symbol, _Period, 14, PRICE_CLOSE);
if(rsiHandle == INVALID_HANDLE)
{
Print("iRSI handle creation failed");
return(INIT_FAILED);
}
よくある原因は次の通りです。
- 指定したシンボルや時間足の履歴が十分に読み込まれていない
- 初期化処理の順序が不適切
- コード全体で別の不整合があり、意図通り初期化されていない
対処の基本は、まず INVALID_HANDLE を必ず判定することです。
これを省くと「なぜ値が取れないのか」が不明確になり、原因切り分けが難しくなります。
5.2 CopyBufferで値が取得できない
iRSI でハンドルを作っても、それだけではRSI値は取得できません。
実値を取るには CopyBuffer() が必要です。公式ドキュメントの iRSI ページでも、取得したハンドルからバッファを読む流れが前提になっています。(MQL5)
典型例は次のような形です。
double rsiBuffer[];
if(CopyBuffer(rsiHandle, 0, 0, 3, rsiBuffer) <= 0)
{
Print("CopyBuffer failed");
return;
}
ここで失敗しやすい理由は主に3つです。
- インジケーター計算がまだ完了していない
- 必要本数ぶんのデータがまだ存在しない
- ハンドル自体が無効
特にEA起動直後は、チャートや履歴の状態によって すぐに十分なデータが揃わないことがあります。
そのため、CopyBuffer() の戻り値を必ず確認し、失敗時は無理に配列を読まない実装にするのが安全です。
5.3 配列エラー(array out of range)が出る
初心者が非常に多く遭遇するのが array out of range です。
これは、取得できていない配列要素にアクセスしたときに起こります。
たとえば次のコードは危険です。
double rsiBuffer[];
CopyBuffer(rsiHandle, 0, 0, 1, rsiBuffer);
double rsiCurrent = rsiBuffer[0];
double rsiPrev = rsiBuffer[1];
この例では1本しか取得していないのに、rsiBuffer[1] を読もうとしているためエラーになります。
安全に書くなら、取得本数と参照インデックスを一致させる 必要があります。
double rsiBuffer[];
if(CopyBuffer(rsiHandle, 0, 0, 2, rsiBuffer) < 2)
{
Print("Not enough RSI data");
return;
}
double rsiCurrent = rsiBuffer[0];
double rsiPrev = rsiBuffer[1];
この種のエラーは、iRSI の問題というより 配列管理の問題 です。
ただし検索ユーザーは「MQL5 iRSI エラー」として探すことが多いため、記事内では明確に分けて説明するのが有効です。
5.4 OnTickのたびにiRSIを作ってしまう
MQL5では、インジケーターハンドルは通常 OnInit() で1回だけ作成 します。
毎ティックで iRSI() を呼ぶ設計は、不要な負荷と不安定要因を増やしやすいです。公式コミュニティでも、ハンドルは OnInit で一度だけ取得し、以後は CopyBuffer で値を読む運用が推奨されています。(MQL5)
避けたい例です。
void OnTick()
{
int rsiHandle = iRSI(_Symbol, _Period, 14, PRICE_CLOSE);
}
推奨パターンは次の通りです。
OnInit()でハンドル作成OnTick()でCopyBuffer()実行- 不要になったら
IndicatorRelease()で解放
なお、IndicatorRelease() は不要になったインジケーターのメモリ解放に使えると公式ドキュメントにあります。(MQL5)
5.5 最新値と確定足を混同する
RSIをEA条件に使うとき、rsiBuffer[0] は 最新バーの値 です。
ただしこれは、まだ確定していない進行中バーの値を含むことがあります。
そのため、戦略によっては rsiBuffer[1] を使って 確定足ベース で判定した方が再現性が高い場合があります。
よくある失敗は次の通りです。
- バックテストでは勝つのに実運用で挙動がぶれる
- 条件成立と不成立がティックごとに変わる
- シグナルが「出たり消えたり」する
この問題はエラーではありませんが、実務上の重大なつまずきポイント です。
再現性を重視するなら、まずは次のように考えると整理しやすいです。
rsiBuffer[0]:進行中バーを含む最新値rsiBuffer[1]:1本前の確定済みバー
5.6 エラーを減らすための最低限チェックリスト
iRSI 実装時は、少なくとも次を毎回確認すると安定しやすくなります。
iRSI()の戻り値がINVALID_HANDLEでないかCopyBuffer()の戻り値が必要本数以上か- 参照する配列インデックスが取得本数内に収まっているか
- ハンドルを
OnTick()で毎回作っていないか - 最新値を使うのか、確定足を使うのかを明確にしているか
この5点を押さえるだけで、初心者が遭遇する iRSI トラブルの大半は回避できます。
6. iRSIをEAで使う際の実践的な注意点
iRSI を使ったEAは比較的簡単に作れますが、実際の運用ではRSI単体では安定した成績になりにくいことが多いです。
RSIは非常に有名なオシレーター系インジケーターですが、その性質を理解せずに使うと、バックテストと実運用の結果が大きく乖離することがあります。
ここでは、EA開発でRSIを使う際に特に重要なポイントを整理します。
6.1 RSIはレンジ相場向きの指標
RSIは基本的に 逆張り系インジケーター です。
そのため、次のような相場で有効になりやすい特徴があります。
- レンジ相場
- ボラティリティが安定している相場
- トレンドが弱い相場
逆に、強いトレンドが発生すると次の状態が長く続くことがあります。
| 状況 | RSI状態 |
|---|---|
| 強い上昇トレンド | RSI > 70 が長時間継続 |
| 強い下降トレンド | RSI < 30 が長時間継続 |
この状態で単純に逆張りすると、損失が連続する可能性が高くなります。
そのため、実務EAではRSI単体ではなく トレンドフィルターを組み合わせる ケースが一般的です。
6.2 トレンドフィルターを組み合わせる
RSI戦略の安定性を高めるためには、トレンド判定を追加する方法がよく使われます。
代表例
| フィルター | 目的 |
|---|---|
| 移動平均 | トレンド方向判定 |
| ATR | ボラティリティ確認 |
| ADX | トレンド強度判定 |
例として、移動平均と組み合わせるロジックは次のようになります。
買い条件
- 価格 > 移動平均
- RSI < 30
売り条件
- 価格 < 移動平均
- RSI > 70
このようにすることで、トレンドに逆らうエントリーを減らすことができます。
6.3 RSIパラメータの最適化
RSIの挙動は、設定した期間によって大きく変化します。
| RSI期間 | 特徴 |
|---|---|
| 7〜9 | シグナル多い |
| 14 | 標準 |
| 20〜21 | ノイズ少ない |
短期設定
- シグナル多い
- ダマシ増える
長期設定
- シグナル少ない
- 安定性高い
EA開発では、通常 Strategy Testerの最適化機能 を使って調整します。
ただし、過剰最適化(オーバーフィッティング)には注意が必要です。
バックテストに完全適合した設定は、将来の相場では機能しない場合があります。
6.4 RSIの時間足依存
RSIの有効性は、時間足によっても変わります。
| 時間足 | 特徴 |
|---|---|
| M1〜M5 | ノイズ多い |
| M15〜H1 | バランス |
| H4〜D1 | シグナル少ない |
一般的に
- 短期足:シグナル多いが安定性低い
- 長期足:シグナル少ないが信頼度高い
という傾向があります。
EAでは
- スキャルピング
- デイトレード
- スイング
など戦略に応じて時間足を選ぶ必要があります。
6.5 RSI単体EAの限界
RSIは有名なインジケーターですが、単体で長期的に優位性を維持するのは難しいケースが多いです。
理由
- トレンド相場に弱い
- 市場参加者に広く知られている
- ダマシシグナルが多い
そのため、実務EAでは次のような構成が多くなります。
典型的なEA構造
トレンド判定
↓
エントリー条件(RSI)
↓
ボラティリティ確認
↓
リスク管理
このように、RSIは エントリー条件の一部として使う のが現実的です。
6.6 実装時のチェックポイント
RSIをEAに組み込む際は、次の点を確認するとトラブルを減らせます。
チェック項目
- RSI値取得が正常に行われているか
- 最新値か確定足かを区別しているか
- CopyBufferエラー処理があるか
- RSIパラメータが適切か
- トレンドフィルターがあるか
これらを整理しておくと、バックテストと実運用の差を小さくできます。
7. FAQ(よくある質問)
7.1 MQL5のiRSIとは何ですか?
iRSI は、MetaTrader 5 の標準テクニカル指標 RSI(Relative Strength Index) をプログラムから利用するための関数です。
RSIは相場の 買われすぎ・売られすぎ を判定するオシレーター系インジケーターで、値は通常 0〜100の範囲 で推移します。
ただし iRSI() が返すのは RSIの値ではなくインジケーターハンドル です。
実際のRSI値は CopyBuffer() を使って取得します。
7.2 iRSIの戻り値はRSI値ですか?
いいえ。
iRSI() の戻り値は インジケーターハンドル(識別番号) です。
例
int rsiHandle = iRSI(_Symbol,_Period,14,PRICE_CLOSE);
RSI値を取得するには次の処理が必要です。
double rsi[];
CopyBuffer(rsiHandle,0,0,1,rsi);
double rsiValue = rsi[0];
7.3 CopyBufferとは何ですか?
CopyBuffer() は、インジケーターの計算結果を 配列へコピーする関数 です。
基本構文
CopyBuffer(handle, buffer_index, start_pos, count, array);
RSIの場合
- buffer_index = 0(RSIはバッファ1本)
例
CopyBuffer(rsiHandle,0,0,3,rsiBuffer);
7.4 iRSIはどこで作るべきですか?
通常は OnInit() 内で1回だけ作成 します。
理由
- インジケーターハンドルは再利用できる
- 毎ティック作ると処理負荷が増える
推奨構造
OnInit
iRSI作成
OnTick
CopyBufferで値取得
7.5 rsiBuffer[0] と rsiBuffer[1] の違いは?
CopyBuffer() で取得した配列は次の意味になります。
| 配列 | 意味 |
|---|---|
| rsiBuffer[0] | 最新バー |
| rsiBuffer[1] | 1本前 |
| rsiBuffer[2] | 2本前 |
注意点
rsiBuffer[0]は 未確定バーの値 を含む場合があります- 安定した判定には rsiBuffer[1](確定足) を使うケースも多いです
7.6 RSIの一般的な設定値は?
最も一般的なRSI設定は次の通りです。
| パラメータ | 値 |
|---|---|
| RSI期間 | 14 |
| 買われすぎ | 70 |
| 売られすぎ | 30 |
ただし、最適な設定は
- 通貨ペア
- 時間足
- 戦略
によって変わります。
7.7 RSIだけでEAを作ることはできますか?
可能ですが、実務では RSI単体では安定しないことが多い です。
理由
- トレンド相場に弱い
- ダマシシグナルが多い
そのため、実際のEAでは次のような組み合わせがよく使われます。
例
- RSI + 移動平均
- RSI + ATR
- RSI + トレンドフィルター
7.8 iRSIでよくあるエラーは?
初心者がよく遭遇するエラーは次の通りです。
| エラー | 原因 |
|---|---|
| INVALID_HANDLE | ハンドル作成失敗 |
| CopyBuffer failed | データ未取得 |
| array out of range | 配列参照ミス |
特に多い原因
- CopyBufferを使っていない
- 配列サイズ不足
- ハンドル作成失敗の未チェック
これらを確認すると、ほとんどの問題は解決できます。