iATR関数の働き・役割について
iATR関数は、ATR(Average True Range)の指標を計算するために使用されます。
ATRは金融商品の価格におけるボラティリティ(=値動きの大きさ)を測定する一般的な手法で、特に外国為替市場のトレーダーにとって有用な情報を提供します。
※ATRに関する詳細は↓の記事をご参照ください
iATR関数の引数について
以下の3つの引数を指定します。
int iATR(
string symbol, // 銘柄名
ENUM_TIMEFRAMES period, // 期間
int ma_period // 平均期間
);
symbol
– 分析する市場のシンボルを指定する文字列。NULLの場合は現在選択しているチャートのシンボルが使用されます。
period
– ATRを計算するために使用する期間を指定する時間枠です。これはENUM_TIMEFRAMESの値を使用します。0を指定した場合、現在の時間軸を示しています。
※enum列挙型については↓の記事をご参照ください
ma_period
– 移動平均の期間を記述します。これはATRを平滑化する際に使用される期間を指定します。
iATR関数の戻り値について
ハンドル値とは、インジケータの値にアクセスするための鍵のようなものです。
理解としてはそれで十分ですが、詳しい事を知りたい方は↓の記事をご参照ください
MQL5ではこのハンドル値を使用して、ATRなどへのインジケータ値にアクセスする権限を取得し、CopyBuffer関数などを用いて実際のATRのデータを取得することができます。
詳しくはこの後の「iATR関数を使う際の注意点」セクションをご覧ください
iATR関数を使う際の注意点
MQL4との違い
MQL4とは違い、MQL5では ATRの値の取得がiATR関数だけでは完結しません。
MQL4では戻り値として、指定されたインデックスのATR値を直接返していましたが、MQL5のiATR関数が返すのはあくまでATRのハンドル値です。
- 値を格納する配列の宣言
- iATR関数によるハンドル(ATRの値を取得する鍵のようなもの)の取得
- ArraySetAsSeries関数による、配列の時系列セット
- CopyBuffer関数による、ATRの値情報を配列にコピー
↑以上の工程をたどる必要があります。
ハンドル値の適切な管理
iATR関数を使用する際には、取得したハンドルを適切に管理し、不要になったらIndicatorRelease関数を使用してリリースする必要があります。
iATR関数を使ったサンプルコード
以下のサンプルコードはiATR関数を使って、ATRのハンドル値を取得し、その値及び値を取得した時間をログ出力する為のものです。
// iATR関数を使用してATR指標のハンドルを取得する関数
int GetATRHandle(string symbol, ENUM_TIMEFRAMES period, int ma_period)
{
return iATR(symbol, period, ma_period);
}
// ハンドルを使用してATR値とその時間を取得する関数
double GetATRValue(int atr_handle, int shift, datetime &atr_time)
{
double atr_buffer[];
datetime time_buffer[];
// ATR値を取得
if(CopyBuffer(atr_handle, 0, shift, 1, atr_buffer) > 0)
{
// ATR値の時間を取得
if(CopyTime(_Symbol, PERIOD_D1, shift, 1, time_buffer) > 0)
{
atr_time = time_buffer[0]; // 時間を参照渡しで返す
return atr_buffer[0]; // ATR値を返す
}
}
atr_time = 0; // エラーがあった場合の時間
return -1; // エラー発生時
}
void OnStart()
{
// EURUSDの1日足のATRハンドルを取得
int atr_handle = GetATRHandle("EURUSD", PERIOD_D1, 14);
datetime atr_time;
// 最新のATR値を取得
double atr_value = GetATRValue(atr_handle, 0, atr_time);
if(atr_value != -1)
{
// 時間を文字列に変換
string time_str = TimeToString(atr_time, TIME_DATE|TIME_MINUTES);
Print("The current ATR value is: ", atr_value, " at ", time_str);
}
else
{
Print("Failed to get ATR value.");
}
}
iSAR関数/iStochastic関数/iMA関数/iBands関数/iRSI関数
————————————————————————————–
※当サイトでは、プログラミング経験ゼロの方でも、プログラミングの基礎から学べる
をメインコンテンツとして展開しています。
→【クライマックス編・これまでにやってきたことを全て使ってEAを完成させる】
第0回から、順を追って勉強していけばプログラミングの経験がなくてもMQL5を使って、MT5用のEAが作れるように書いています。最初は難しいと感じるかもしれませんが、繰り返し勉強していく事で自然とスキルが身についていくはずです。興味ある方は是非ご覧ください。
コメント