MQL4MQL5 テクニカル指標
iWPR()
- できること
- ウィリアムズ%R の値を取得する
- 対応
- MQL4・MQL5
iWPR() とは
ウィリアムズ%R(期間内の高値・安値の中で、終値がどの位置にあるか)を計算する関数です。0〜−100 の値で、−20 より上が買われすぎ、−80 より下が売られすぎの目安とされます。
iWPR() の書式と引数
MQL4 の場合MT4
double iWPR(string symbol, int timeframe, int period, int shift)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
symbol | string | 必須 | 銘柄名。チャートの銘柄なら _Symbol(NULL も可)。 |
timeframe | int | 必須 | 時間足。0 または PERIOD_CURRENT でチャートの時間足。 |
period | int | 必須 | 期間(よく使われるのは 14)。 |
shift | int | 必須 | 値を取得するバーの位置。0 が現在(未確定)のバー、1 が確定したひとつ前のバー。 |
戻り値(MQL4)
ウィリアムズ%R の値(0〜−100)。
MQL5 の場合MT5
int iWPR(string symbol, ENUM_TIMEFRAMES period, int calc_period)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
symbol | string | 必須 | 銘柄名。チャートの銘柄なら _Symbol(NULL も可)。 |
period | ENUM_TIMEFRAMES | 必須 | 時間足。PERIOD_CURRENT でチャートの時間足。 |
calc_period | int | 必須 | 期間(よく使われるのは 14)。 |
戻り値(MQL5)
インジケーターのハンドル。
iWPR() の使い方(コード例)
MQL4
double w = iWPR(_Symbol, 0, 14, 1);
if(w < -80) Print("売られすぎ %R=", w);MQL5
int h = iWPR(_Symbol, PERIOD_CURRENT, 14);
double v[];
if(h != INVALID_HANDLE && CopyBuffer(h, 0, 1, 1, v) == 1 && v[0] < -80)
Print("売られすぎ %R=", v[0]);
IndicatorRelease(h);OnTick()・OnStart() などの関数の中に書いて使う例です。MetaEditor でコンパイルできることを確認済みです。
iWPR() の注意点
- MQL5 では値ではなく「ハンドル」が返ります。ハンドルは OnInit() で1回だけ作り、CopyBuffer() で値を読み出します。












