🐥
MQL5でiMA()移動平均線を取得する
// 移動平均線の値を取得する関数
double getMAValue(int shift)
{
static int ma_handle = -1; // MAのハンドル(静的ローカル変数)
static ENUM_TIMEFRAMES last_timeframe = PERIOD_CURRENT; // 前回の時間軸(静的ローカル変数)
// 現在のチャートの時間軸が前回の時間軸と異なる場合、ハンドルをリセット
if(last_timeframe != _Period)
{
last_timeframe = _Period; // 現在の時間軸を記録
ma_handle = -1; // ハンドルをリセット
}
// 移動平均線のハンドルが未取得の場合、新しく取得する
if(ma_handle == -1)
{
ma_handle = iMA(_Symbol, last_timeframe, 14, 0, MODE_SMA, PRICE_CLOSE); // 14期間の単純移動平均
}
double maValue[1]; // 値を格納する配列
// バッファをコピーして移動平均の値を取得
CopyBuffer(ma_handle, 0, shift, 1, maValue);
return maValue[0]; // 最新の移動平均線の値を返す
}
Discussion