どうも、こっこです。
最近は収入の柱を増やすためにFXでの取引の勉強をはじめました。もともと仕事の一部としてMQL4でサインツール作成やエキスパートアドバイザ作成を依頼されて作成していたので、この機会に自分でも勉強しつつ、稼ぎを出してやろうというところです。
今回はMQLでカスタムインジケーター、エキスパートアドバイザを作成する際に、RSIの数値をどう取得して取り扱うのかを説明します。
iRSI関数書式
double iRSI( string symbol, //通貨ペア int timeframe, //時間軸(足) int period, //平均期間 int applied_price, //適用価格 int shift //バーシフト );
iRSI関数引数
引数名 | 型 | 詳細 |
symbol | string | 対象とする通貨ペア名。
NULLを入力することで現在のチャートに表示されている通貨ペアを利用します。 |
timeframe | int | 対象とする時間軸を入力します。
0を入力することで現在のチャートに表示されている時間軸を利用します。 |
period | int | RSI値を計算する平均期間を渡します。 |
applied_price | int | 適用価格をENUM(列挙)で値を指定します。
列挙体から選択するか番号を渡します。 |
shift | int | バッファから取得するバーシフトの数字を渡します。
現在のバーを基準として、左(過去)には1ずつ増え、右(未来)には1ずつ減ります。最新で今動いているバーは0になります。 |
iRSI関数返り値
double型でRSIを計算した値を返します。
RSI値取得例
void OnCalculate()//引数省略 { double rsiNow = iRSI(NULL, 0, 14, PRICE_CLOSE, 0); }
RSI値計算例
◯シグナル表示条件
・RSIの値が70を超えていたらLow(売り)のシグナルを表示
・RSIの値が30を下回っていたらHigh(買い)のシグナルを表示
void OnCalculate() //引数省略 { string signal = ""; for(int i=0; i<Bars; i++) { double rsiNow = iRSI(NULL, 0, 14, PRICE_CLOSE, i); if(70 <= rsiNow) { signal = "Low"; //RSIが70を超えていたらLow(売り)の処理 } else if(rsiNow <= 30) { signal = "High"; //RSIが30を下回ったらHigh(買い)の処理 } } return(rates_total); }
※結構省略している部分が多いので、あくまで参考程度に見てください。
まとめ
いかがだったでしょうか?
FXやバイナリーではサブウィンドウ表示でRSIを使用する機会が多く、売られすぎ・買われすぎを判断して、レンジ相場での逆張りとして利用できます。
MQL4でこのRSIを利用し、サインツールやエキスパートアドバイザの作成に役立ててみてください。
ではまた!
【広告枠】初心者向けMQL4開発ができる格安パソコン
・Let’s note(CF-SZ5) 価格:39800円
https://amzn.to/3ktKsay
└中古品、軽量コンパクト、画面サイズ小さめ
・Think Pad(L580) 価格:37230円
https://amzn.to/3krdIip
└中古品、CPU第8世代i5とだいぶ新しい、画面サイズが15.6インチなのでちょっと大きめ
・NEC(VK26) 価格:42880円
https://amzn.to/3QN88mB
└中古品、CPUが第7世代i7なので心配無し、画面サイズが15.6インチなのでちょっと大きめ、ディスクドライブ付きなので分厚い
※各価格は掲載当時の価格になります。