
MQL4MQL5 テクニカル指標
iATR()
- できること
- ATR(平均的な値幅)の値を取得する
- 対応
- MQL4・MQL5
iATR() とは
ATR(Average True Range:一定期間の平均的な値幅)を計算する関数です。相場の動きの大きさに合わせて損切り幅や利確幅を決めるときによく使います。
iATR() の書式と引数
MQL4 の場合MT4
double iATR(string symbol, int timeframe, int period, int shift)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
symbol | string | 必須 | 銘柄名。チャートの銘柄なら _Symbol(NULL も可)。 |
timeframe | int | 必須 | 時間足。0 または PERIOD_CURRENT でチャートの時間足。 |
period | int | 必須 | ATR の期間(よく使われるのは 14)。 |
shift | int | 必須 | 値を取得するバーの位置。0 が現在(未確定)のバー、1 がひとつ前の確定したバー。 |
戻り値(MQL4)
ATR の値(価格の幅。USDJPY なら 0.25 のような値)。
MQL5 の場合MT5
int iATR(string symbol, ENUM_TIMEFRAMES period, int ma_period)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
symbol | string | 必須 | 銘柄名。チャートの銘柄なら _Symbol(NULL も可)。 |
period | ENUM_TIMEFRAMES | 必須 | 時間足。PERIOD_CURRENT でチャートの時間足。 |
ma_period | int | 必須 | ATR の期間(よく使われるのは 14)。 |
戻り値(MQL5)
インジケーターのハンドル。
iATR() の使い方(コード例)
MQL4
// ATR の 1.5 倍を損切り幅にする
double atr = iATR(_Symbol, 0, 14, 1);
double sl = NormalizeDouble(Bid - atr * 1.5, _Digits);
Print("ATR=", atr, " 買いの損切り=", sl);MQL5
int hAtr = INVALID_HANDLE;
int OnInit()
{
hAtr = iATR(_Symbol, PERIOD_CURRENT, 14);
return hAtr == INVALID_HANDLE ? INIT_FAILED : INIT_SUCCEEDED;
}
void OnTick()
{
double atr[];
if(CopyBuffer(hAtr, 0, 1, 1, atr) < 1) return;
double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
Print("ATR=", atr[0], " 買いの損切り=", NormalizeDouble(bid - atr[0] * 1.5, _Digits));
}OnTick()・OnStart() などの関数の中に書いて使う例です。MetaEditor でコンパイルできることを確認済みです。
iATR() の注意点
- MQL5 では値ではなく「ハンドル」(インジケーターの番号)が返ります。ハンドルは OnInit() で1回だけ作り、OnTick() などで CopyBuffer() を使って値を読み出します。毎ティック作り直すと動作が重くなります。
- ATR は価格の幅なので、pips にするには pips の大きさ(5桁口座なら _Point × 10)で割ります。












