
RSIによる取引システムの設計方法を学ぶ
はじめに
取引の世界に通じている方で「トレンドは友達」という言葉を聞いたことがある方は多いと思います。取引はトレンドに沿ってするべきであり、トレンドに逆らった取引はしてはいけないということです。確かに、場合によっては反発中にトレンドに逆らって取引することもあります。次の2、3行で反発トレンドについて説明するので、「反発」がなにかわからなくてもご心配無用です。知っておいていただきたいのは、トレンドに逆らって取引するとリスクがより高くなるので、するにしても、注意深く、厳しくリスク管理する必要があるということです。
ここでは、市場に存在することのあるトレンドについてお話します。これについてはすでに別の記事で言及したので、これほど頻繁に異なる所でこれを繰り返している理由を説明します。
- 市場の動きを見極めることが重要であり、意思決定はそれに従っておこなうことになる
- 特に、異なる文脈や方法で言及された場合、繰り返しによって理解が深まり、異なる洞察が得られる可能性がある
- 私の記事を読むのが初めての読者のために、この具体的な記事のテーマについて完全な見解を述べたい
市場の方向性やトレンドを見極めることも必要ですが、その方法を学ぶ前に、それぞれの意味をよく理解する必要があります。
市場を見ると、プライスアクションや値動きによって、3つの方向性があることがわかります。上昇トレンド、下降トレンド、横ばいです。これらの市場トレンドのそれぞれでは、市場参加者が支配的な立場にあります。
- 上昇トレンド:
上昇トレンドでは、買い手が市場の大半を支配し、これが価格の上昇を実現します。つまり、安値と高値をより高くすることで価格が上がっていくのです。
- 下降トレンド:
下降トレンドでは、売り手が市場の大半を支配し、これによって価格が下落します。つまり、安値と高値をより低くすることで価格が下がっていくのです。
- 横ばい:
横ばいでは、主に売り手と買い手のバランスが取れており、どちらかが完全にコントロールすることはできません。これは上昇トレンドと下降トレンド以外のあらゆる動きのことです。以下は、横ばいの動きの形態のいくつかです。
このようなトレンドを見極めた上で、トレンドの強弱を見極める必要があります。これにはモメンタムの概念を使用します。モメンタムは、相場の方向性やトレンドの速度を測ることができる概念です。このモメンタムの概念は、取引や市場の動きにおいて非常に重要です。この概念に基づいたツールは数多く存在します。今回は、その中でも最もよく使われる指標の1つであるRSI(Relative Strength Index、相対強度指数)について考えてみましょう。RSI戦略のいくつかの取引システムを作成することで、この便利なツールを簡単かつ効果的に使用する方法を見ていきます。今回は、以下のトピックについて考えてみます。
これらのトピックを通して、この便利なツールについてたくさん学んでいきます。RSIとは何か、そしてどのように計算されるかを見ていきます。「RSIの定義」では、指標の概念に関するいくつかの洞察と新しいアイデアについて考察します。続いて、取引で役立つRSI戦略をいくつか考えてみます。「RSIの設計図」では、プログラミングの準備のために、言及されたRSI戦略の設計図を学び、プログラムが何をすべきかを確認します。 最後に、簡単かつ効果的に取引を行い、取引判断を改善するのに役立つRSIに基づいたプログラムの書き方を説明します。
本稿と他のすべての記事を通して、MetaTrader 5取引プラットフォームとMetaTrader 5に組み込まれているMetaQuotes言語エディタMetaEditorを使用しています。すべてのプログラムコードは、このエディタを使用して記述されています。
MetaTrader 5は次のリンクからダウンロードできます。https://www.metatrader5.com/ja/download
その方法の詳細については、前回の記事「アルゴリズム取引システムを設計する理由と方法を学ぶ」をご覧ください。
免責条項:この記事のすべてのコンテンツは、教育を目的として作成されたものであり、他の目的のために作成されたものではありません。そのため、この記事の内容は何らかの結果を保証するものではありませんので、この記事の内容に基づいておこなう行動については、自己責任でお願いします。
この興味深い記事を読んで理解し、取引の成功へのジャ―二―に新たなブロックを築きましょう。
RSIの定義
RSI (Relative Strength Index)は、ウェルス・ワイルダーが作成した指標です。この指標の主な目的は、現在の商品の強さをその履歴と比べて測定することです。そのために、この指標は、上昇した日と下降した日の値動きを比較します。
RSIは、上昇または下降する相場の速度を示すためモメンタムですが、0~100のレベルの間で振動する境界線をもつためオシレータでもあります。また、価格をリードして、動きが起こる前に潜在的な動きを示すことができるため先行指標であるとも言えます。RSIは、モメンタム指標の2つの問題点を克服するように設計されています。すなわち、RSIは、急激な動きや不規則な動きを吸収する能力と、0~100の範囲にあるために拘束される能力を備えています。
RSIは次を示すため役立つことがあります。
- チャートだけではわからない潜在的な動き
- 明確な支持および抵抗のレベル
- RSIと価格の間に示される乖離による、反転の目安となるダイバージェンスシグナル
- 70レベルを上回るか30レベルを下回る変動が失敗した場合に反転の可能性を警告
RSI指標は次の手順で計算および構築されます。
- 14回の終値のうち、正または上昇の動きを取得する
- 14回の終値のうち、負または下降の動きを取得する
- 14回の正の動きの平均値=正の動きの和/14
- 14回の負の動きの平均値=負の動きの和/14
- RS = 14回の正の動きの平均値/14回の負の動きの平均値
- RSI = 100 - [100 /(1+RS)]
方法を理解するために、例を挙げてみましょう。
- 仮に14日間の終値が以下だとします。
日 | 価格 |
---|---|
1 | 100 |
2 | 105 |
3 | 120 |
4 | 110 |
5 | 100 |
6 | 115 |
7 | 120 |
8 | 130 |
9 | 125 |
10 | 135 |
11 | 140 |
12 | 130 |
13 | 140 |
14 | 145 |
RSIを計算する場合、次のようになります。
まず、それぞれの日を前日から引くことで、正の動きと負の動きを計算します。日 | 価格 | 正の動き | 負の動き |
---|---|---|---|
1 | 100 | 0 | 0 |
2 | 105 | 5 | 0 |
3 | 120 | 15 | 0 |
4 | 110 | 0 | 10 |
5 | 100 | 0 | 10 |
6 | 115 | 15 | 0 |
7 | 120 | 5 | 0 |
8 | 130 | 10 | 0 |
9 | 125 | 0 | 5 |
10 | 135 | 10 | 0 |
11 | 140 | 5 | 0 |
12 | 130 | 0 | 10 |
13 | 140 | 10 | 0 |
14 | 145 | 5 | 0 |
- 正の動きの合計 = 80
- 負の動きの合計 = 35
- 14回の正の動きの平均値 = 正の動きの和/14
- 14回の正の動きの平均値 = 80 / 14 = 5.7
- 14回の負の動きの平均値 = 負の動きの和/14
- 14回の負の動きの平均値 = 35 / 14 = 2.5
- 次に、RSを計算します。
- RS = 14回の正の動きの平均値/14回の負の動きの平均値
- RS = 5.7 / 2.5 = 2.29
- 次に、RSIを計算します。
- RSI = 100 - [100 / (1 + RS)]
- RSI = 100 - [100 / (1 + 2.29)] = 69.57
- 次の動きの平均値を取得する:
- 次の正の動きの平均値 = [{(前の正の動きの平均値 * 13) + 今日の正の動き(存在する場合)}/14]
- 次の負の動きの平均値 = [{(前の負の動きの平均値 * 13) + 今日の負の動き(存在する場合)}/14]
- RSを取得する
- RS = 次の正の動きの平均値/次の負の動きの平均値
- RSIを取得する
- RSI = 100 - [ 100 / (1+ RS)]
- RSI期間
- 指標を算出するための価格タイプ
- RSI線の色
- RSI線のスタイル
- RSI線の太さ
- 0レベル:指標範囲の最小値(可能な指標値を制限)
- 100レベル:指標範囲の最大値(可能な指標値を制限)
- 30レベル:売られ過ぎの領域
- 70レベル:買われ過ぎの領域
- RSI値 < 50 = 買い
- RSI値 > 70 = 利食い
- RSI値 > 50 = 売り
- RSI値 < 30 = 利食い
- 横ばいの間:
- RSI値 < 30 = 買い
- RSI値 < 30 = 利食い
- RSI値 > 70 = 売り
- RSI値 < 50 = 利食い
- RSI上昇戦略:
- RSI下降戦略:
- RSI横ばい戦略
次に、正負の動きに対して、14回の平均を計算します。
以下が結果です。
前のステップでは、最初のRSI値を計算しています。次のステップでは、最初に計算した値の後にRSIを計算します。
RSI指標は上記の手順で計算されます。ただし、手動で計算する必要はありません。計算の詳細は、RSIの構造を理解していただくためにここに記載しているだけです。これで、取引でより良い結果を得るための、より効果的な使い方のヒントを得ることができるかもしれません。MetaTrader 5プラットフォームには、すぐに使える組み込みRSIが用意されているため、計算する必要はありません。その代わり、チャート上で指標を実行することで、すぐに使い始めることができます。次の画像でその方法を示しています。
Meta Trader 5取引ターミナルで手順に従ってください。
オシレータの一覧からRelative Strength Index (RSI)を選択すると、以下のような指標パラメータウィンドウが表示されます。
臨まれるパラメータを選択し、[OK]をクリックします。RSIは、チャート上に以下のように表示されます。
RSIは、メインチャートの下にある別のウィンドウに表示されます。ウィンドウには4つの価格レベルがあります。これらは次を示します。
もう1つ、デフォルトでは表示されないレベルがあります。これは、範囲の真ん中に位置するレベルで、50に相当します。
RSIの戦略
このセクションでは、RSI (Relative Strength Index)指標の使い方を説明します。これには、相場の方向性によって異なる簡単な戦略を使用します。
上昇トレンド、下降トレンド、横ばいの時にRSIをどのように使用できるかを見ていきます。具体的な使い方は、買われすぎの領域、範囲の真ん中、売られすぎの領域に直接関係します。まず、RSIが異なるトレンドや動きで異なる動きをすることがはっきりとわかるので、RSIがどのように動くのかを理解する必要があります。その後、それぞれのトレンドで使える簡単な戦略を使います。主な目的は、その使い方を学び、新しい洞察を得て、取引に役立つ新しいアイデアに目を向けることです。このセクションでは、RSIがそれぞれのトレンドや動きのタイプにどのように反応するかを見ていきます。ただし、これらの戦略は、RSIが市場データの分析にどのように適用できるかを示すための参考資料として提供されていることにご留意ください。特に教育的な戦略に関しては、ご自分の取引スタイルに合わない戦略もあるかもしれないので、取引で使いたい戦略は必ずテストしてください。
ほとんどの時間、RSI値は50と70(買われ過ぎレベル)の間を移動しています。
上昇トレンドでの取引戦略は次の通りです。
ほとんどの時間、RSIは50と30(売られ過ぎレベル)の間を移動しています。
取引戦略は次のようになります。
ほとんどの時間、RSIは30(売られ過ぎレベル)と70(買われ過ぎレベル)の間を移動しています。
取引戦略は次のようになります。
RSIの設計図
このトピックでは、RSIに基づいた戦略で取引する際に、コンピュータに与えるべき指示を示します。
これまで、取引システムとして実装すべき4つの戦略について考えてきました。上昇トレンドRSI戦略、下降トレンドRSI戦略、横ばいRSI戦略(買い、売り)です。次の設計図に、各戦略の手順を示します。
十分明確だと思います。取引システムに実装すべき各戦略の設計図ができたので、次はプログラムの作成に移ります。では、次に取引システムのコードを作成してみましょう。
RSI取引システム
では、上記で考えたRSIの取引戦略をもとにした取引システムのコードの書き方を見てみましょう。まず、MetaTrader 5の取引ターミナルを開き、F4を押してIDE(MetaQuotes言語エディタ)を開き、コードを書き込むか、次の写真に示す手順に従ってください。
または、MetaTrader 5のツールバーで[IDE]ボタンをクリックすることもできます。
新しく開かれたMetaEditor IDEに、以下のようなウィンドウが表示されます。
ファイルを新規作成し、その中に取引システムのコードを記述します。
EAファイルを新規に作成する場合は、最初のオプションを選択します。詳細については、私が過去に書いた「 アルゴリズム取引システムを設計する理由と方法を学ぶ」をご覧ください。
まず、シンプルな純粋なRSIシステムを設計する方法を理解するために、チャート上でRSI値をコメントするシンプルなRSIに基づいたEAを共有したいと思います。
//+------------------------------------------------------------------+ //| Simple RSI System.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //Creating array for prices double RSIArray[]; //Identying RSI properties int RSIDef = iRSI(_Symbol, _Period, 14, PRICE_CLOSE); //Sorting prices array ArraySetAsSeries(RSIArray,true); //Identifying EA CopyBuffer(RSIDef,0,0,1,RSIArray); //Calculating EA double RSIValue = NormalizeDouble(RSIArray[0],2); //comment with RSI value on the chart Comment("RSI Value is ",RSIValue); } //+------------------------------------------------------------------+
作成したプログラムは次のように実行できます。
ファイルをダブルクリックするか、チャート上にドラッグ&ドロップすると、次のようなウィンドウが表示されます。
[OK]をクリックすると、チャート上でプログラムが起動します。
- RSI上昇戦略:
コードは次のとおりです。
//+------------------------------------------------------------------+ //| RSI - Uptrend Strategy.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //Creating array for prices double RSIArray[]; //Identying RSI properties int RSIDef = iRSI(_Symbol, _Period, 14, PRICE_CLOSE); //Sorting prices array ArraySetAsSeries(RSIArray,true); //Identifying EA CopyBuffer(RSIDef,0,0,1,RSIArray); //Calculating EA double RSIValue = NormalizeDouble(RSIArray[0],2); //Creating signal according to RSI if(RSIValue<50) Comment ("Uptrend - BUY"); if(RSIValue>70) Comment ("Uptrend - TAKE PROFIT"); } //+------------------------------------------------------------------+
下図のようにナビゲータウィンドウからチャート上でこのプログラムを実行します。エラーや警告がないことを確認してください。
ファイルをダブルクリックするか、チャート上にドラッグ&ドロップし、プログラムウィンドウで[OK]をクリックすると、チャート上にプログラムが起動します。
プログラムシグナルは以下の通りです。
- 買いシグナル:
- 利食いシグナル:
- RSI下降戦略:
コードは次の通りです。
//+------------------------------------------------------------------+ //| RSI - Downtrend Strategy.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //Creating array for prices double RSIArray[]; //Identying RSI properties int RSIDef = iRSI(_Symbol, _Period, 14, PRICE_CLOSE); //Sorting prices array ArraySetAsSeries(RSIArray,true); //Identifying EA CopyBuffer(RSIDef,0,0,1,RSIArray); //Calculating EA double RSIValue = NormalizeDouble(RSIArray[0],2); //Creating signal according to RSI if(RSIValue>50) Comment ("Downtrend - SHORT"); if(RSIValue<30) Comment ("Downtrend - TAKE PROFIT"); } //+------------------------------------------------------------------+
下図のようにナビゲータウィンドウからチャート上でこのプログラムを実行します。エラーや警告がないことを確認してください。
ファイルをダブルクリックするか、チャート上にドラッグ&ドロップし、プログラムウィンドウでOKをクリックすると、チャート上にプログラムが起動します。
実行中のプログラムは、次に示すようなシグナルを生成します。
- 売りシグナル:
- 利食いシグナル:
- RSI横ばい戦略:
この戦略のコードは以下の通りです。理解しやすいように、戦略を2つの別々のコードとプログラムに分割します。1つは買いシグナルとその利食い用で、もう1つは売りシグナルとその利食い用で、どちらも横ばいの間です。
- 買いシグナル
//+------------------------------------------------------------------+ //| RSI - Sideways Strategy - Buy.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //Creating array for prices double RSIArray[]; //Identying RSI properties int RSIDef = iRSI(_Symbol, _Period, 14, PRICE_CLOSE); //Sorting prices array ArraySetAsSeries(RSIArray,true); //Identifying EA CopyBuffer(RSIDef,0,0,1,RSIArray); //Calculating EA double RSIValue = NormalizeDouble(RSIArray[0],2); //Creating signal according to RSI if(RSIValue<30) Comment ("Sideways - BUY"); if(RSIValue>50) Comment ("Sideways - TAKE PROFIT"); } //+------------------------------------------------------------------+
下図のようにナビゲータウィンドウからチャート上でこのプログラムを実行します。エラーや警告がないことを確認してください。
ファイルをダブルクリックするか、チャート上にドラッグ&ドロップし、プログラムウィンドウで[OK]をクリックすると、チャート上にプログラムが起動します。
プログラム実行後のシグナルは、次の図のようになります。
- 買いシグナル:
- 利食いシグナル:
- 売りシグナル
//+------------------------------------------------------------------+ //| RSI - Sideways Strategy - Short.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //Creating array for prices double RSIArray[]; //Identying RSI properties int RSIDef = iRSI(_Symbol, _Period, 14, PRICE_CLOSE); //Sorting prices array ArraySetAsSeries(RSIArray,true); //Identifying EA CopyBuffer(RSIDef,0,0,1,RSIArray); //Calculating EA double RSIValue = NormalizeDouble(RSIArray[0],2); //Creating signal according to RSI if(RSIValue>70) Comment ("Sideways - SHORT"); if(RSIValue<50) Comment ("Sideways - TAKE PROFIT"); } //+------------------------------------------------------------------+
下図のようにナビゲータウィンドウからチャート上でこのプログラムを実行します。エラーや警告がないことを確認してください。
ファイルをダブルクリックするか、チャート上にドラッグ&ドロップし、プログラムウィンドウで[OK]をクリックすると、チャート上にプログラムが起動します。
実行中のプログラムは、次に示すようなシグナルを生成します。
- 売りシグナル:
- 利食いシグナル:
取引で一般的に使用されている最も人気のある指標の1つであるRSI (Relative Strength Index)に基づいて、簡単な戦略を作成して使用する方法、そして、それが市場のトレンドや動きによって使い分けられることを見てきました。
ここで改めて確認しておきたいのは、この記事はあくまでも教育のために書かれており、その主な目的はこの便利なツールについて説明することであるということです。この記事に書かれているものを取引に使用する必要がある場合は、使用前に必ず正しくテストしてください。他の誰かにとっては有用でも、自分の取引戦略や計画によっては有用でない場合があるためです。
結論
この記事では、取引やテクニカル分析における最も強力なツールの1つであるRSIを紹介し、RSIが市場の動きや取引において最も重要な概念の1つであるモメンタムの概念に依存することを見てきました。RSIの構造、計算の詳細を説明することで、この指標がどのように適切で、効果的で、有益な方法で使用できるかを理解していただけるように努めました。
また、取引で使用できる簡単な戦略を紹介し、さまざまな市場の動きやトレンドの中で、どのように使用できるかを確認しました。上昇トレンド、下降トレンド、横ばいの時の使い方がおわかりになったと思います。効果的に使うことで取引に役立つ戦略は多数存在するため、このRSIや他の指標について読みながら勉強を続けて頂きたいと思います。
また、これらの戦略に基づいた取引システムをコード化する方法も学びました。MQL5や一般的なプログラミングを使用すれば様々な便利な取引ツールや分析ツールを効果的、正確かつ簡単に使用することができるため、私たちの生活はスムーズでバランスの取れたものになります。
この記事で学んだことを活かして、コードを書いてみることをお勧めします。そのような練習で、学んだことについての理解や認識が高まり、より多くの洞察や新しいアイデアを得られるかもしれません。この記事が読者の役に立ち、そのアイデアのいくつかが取引でより良い結果を出すために役立つことを願っています。
MetaQuotes Ltdにより英語から翻訳されました。
元の記事: https://www.mql5.com/en/articles/10528





- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索