🙆
MQL5でATRの取得
// ATRの値を取得する関数
double getATRValue(int shift, int atr_period)
{
static int handle = -1; // ATRのハンドル(静的ローカル変数)
static ENUM_TIMEFRAMES last_timeframe = PERIOD_CURRENT; // 前回の時間軸(静的ローカル変数)
// 現在のチャートの時間軸が前回の時間軸と異なる場合、ハンドルをリセット
if(last_timeframe != _Period)
{
last_timeframe = _Period; // 現在の時間軸を記録
handle = -1; // ハンドルをリセット
}
// ATR指標のハンドルを取得
if(handle == -1)
{
handle = iATR(_Symbol, last_timeframe, atr_period); // ATR期間のATR
}
double atrValue[1]; // ATRの値を格納する配列
// バッファをコピーしてATRの値を取得
if(CopyBuffer(handle, 0, shift, 1, atrValue) <= 0)
{
Print("Error getting ATR value: ", GetLastError());
return 0.0; // エラーが発生した場合
}
return atrValue[0]; // 指定されたシフトでのATRの値を返す
}
Discussion