https://s3-us-west-2.amazonaws.com/secure.notion-static.com/afde1223-0df1-4c4d-acbe-8eede9a2d960/chart3.png

RSIは、上昇幅の平均と下落幅の平均の比率を0から100の範囲で正規化したものです。下落の割合が大きければ0に近づき、上昇の割合が大きければ100に近づきます。

RSIが30を下回り、売られすぎと判断されたときに買いシグナル、RSIが70を上回り、買われすぎと判断されたときに売りシグナルを出します。

仕掛けシグナル

<aside> 💡 買いシグナル:1本前のRSIが30を下回ったとき 売りシグナル:1本前のRSIが70を上回ったとき

</aside>

コード

//共通ライブラリ
#include "LibEA.mqh"

sinput double Lots = 0.1; //売買ロット数

//ティック時実行関数
void Tick()
{
   int sig_entry = EntrySignal(); //仕掛けシグナル
   //成行売買
   MyOrderSendMarket(sig_entry, sig_entry, Lots);
}

input int RSIPeriod = 14; //RSIの期間

//仕掛けシグナル関数
int EntrySignal()
{
   //1本前のRSI
   double RSI1 = iRSI(_Symbol, 0, RSIPeriod, PRICE_CLOSE, 1);

   int ret = 0; //シグナルの初期化

   //買いシグナル
   if(RSI1 < 30) ret = 1;
   //売りシグナル
   if(RSI1 > 70) ret = -1;

   return ret; //シグナルの出力
}

説明

RSIは、[iRSI()](<https://toyolab-fx.notion.site/iRSI-RSI-bc693f49d32f47428e65b762a2593cc7>)というテクニカル指標関数で求められます。

RSIの期間として、別途宣言したRSIPeriodを引数periodに代入します。

1本前のRSI1の大きさでシグナルを判定します。