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()
というテクニカル指標関数で求められます。
RSIの期間として、別途宣言したRSIPeriod
を引数period
に代入します。
1本前のRSI1
の大きさでシグナルを判定します。