ENUM_TIMEFRAMESとは?
ENUM_TIMEFRAMESはMQL5で事前に定められた、定義済みenum列挙型です。
※enum列挙型についての詳細は↓の記事をご参照ください
ENUM_TIMEFRAMES列挙型は、さまざまな時間枠(タイムフレーム)を定義しており、主に価格チャートの期間を指定する際に使用されます。
ENUM_TIMEFRAMESには、1分足から1ヶ月足までの標準的な時間枠が含まれており、エキスパートアドバイザーやカスタムインジケ-タ、スクリプト内でデータを分析するために利用されます。
ENUM_TIMEFRAMES列挙型の定数リストとして設定されている識別子は以下の通りです。
PERIOD_CURRENT
PERIOD_CURRENTは、プログラムが実行されているチャートの現在の時間軸を表します。これにより、コードは動的に現在のチャートのタイムフレームに合わせて調整が可能になります。
PERIOD_M1
PERIOD_M1は、1分間の価格データを示します。このタイムフレームは、短期間の価格動向を分析する際に使用されます。
PERIOD_M2
PERIOD_M2は、2分間の価格データを表します。このような少し珍しいタイムフレームは、特殊なトレーディング戦略に利用されることがあります。
PERIOD_M3
PERIOD_M3は、3分間の価格データを意味します。これもまた、短期間の取引で使われることがあります。
PERIOD_M4
PERIOD_M4は、4分間の価格データを指します。短期トレーダーにとって、異なる視点から市場を分析するのに役立ちます。
PERIOD_M5
PERIOD_M5は、5分足のチャートを示します。これはデイトレーダーにとって非常に一般的なタイムフレームです。
PERIOD_M6
PERIOD_M6は、6分間の価格データです。これも特定のトレーディング戦略で利用される可能性があります。
PERIOD_M10
PERIOD_M10は、10分足の価格データを表し、中期間の市場分析に適しています。
PERIOD_M12
PERIOD_M12は、12分間の価格データを示します。これは、あまり一般的ではありませんが、特定の分析手法において有用です。
PERIOD_M15
PERIOD_M15は、15分足のチャートの価格データを示します
多くのデイトレーダーが好んで使う時間枠です。
PERIOD_M20
PERIOD_M20は、20分間の価格データを意味し、情報、データ、またはプロセスの詳細レベルに細かさを求めるトレーダーに適しています。
PERIOD_M30
PERIOD_M30は、30分足のチャートを指します。このタイムフレームは、短期間から中期間のトレード戦略でよく使用されます。
PERIOD_H1
PERIOD_H1は、1時間足の価格データです。これは短期間から中期間の分析に適した非常に一般的なタイムフレームです。
PERIOD_H2
PERIOD_H2は、2時間足のチャートを意味します。これは、より広い市場の動きを捉えるために使われることがあります。
PERIOD_H3
PERIOD_H3は、3時間足のチャートを示します。この時間枠では、各バーまたはキャンドルが3時間分の取引データを表します。
PERIOD_H4
PERIOD_H4は、4時間足のチャートに対応しています。多くのトレーダーが使用するこの時間枠では、1つのバーまたはキャンドルが4時間の市場活動を集約して表示します。
PERIOD_H6
PERIOD_H6は、6時間ごとのデータを表すチャート時間軸です。これは、より長い時間軸を好むトレーダーにとって有益な視点を提供します。
PERIOD_H8
PERIOD_H8は、8時間足のチャートを指します。一日を3つの区切りで見たい場合に便利な時間枠です。
PERIOD_H12
PERIOD_H12は、12時間足のチャートを意味します。この識別子によって表される時間枠は、日中の二つの異なる取引セッションをカバーすることができます。
PERIOD_D1
PERIOD_D1は、日足チャートに使用される時間枠です。1日の市場の動きを1つのバーまたはキャンドルで示します。
PERIOD_W1
PERIOD_W1は、週足チャートを示す識別子です。1週間の市場動向を1つのバーまたはキャンドルで表現します。
PERIOD_MN1
PERIOD_MN1は、月足チャートのための識別子です。この時間枠は、一ヶ月の市場の全体像を把握するのに役立ちます。
ENUM_TIMEFRAMESを利用したサンプルコード
ENUM_TIMEFRAMESの各識別子を使用して、特定のタイムフレームでの最新の価格バーのデータを取得するMQL5のサンプルコードを以下に示します。このコードは、各タイムフレームでの最新バーから1つ前の終値を出力するだけの簡単な例です。
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
// PERIOD_CURRENTのバーの終値を取得
double current_close = SymbolInfoDouble(_Symbol, SYMBOL_BID);
Print("Current Close: ", current_close);
// 各タイムフレームの最新の終値を取得し、表示
Print("M1 Close: ", GetLastClose(PERIOD_M1));
Print("M2 Close: ", GetLastClose(PERIOD_M2));
Print("M3 Close: ", GetLastClose(PERIOD_M3));
Print("M4 Close: ", GetLastClose(PERIOD_M4));
Print("M5 Close: ", GetLastClose(PERIOD_M5));
Print("M6 Close: ", GetLastClose(PERIOD_M6));
Print("M10 Close: ", GetLastClose(PERIOD_M10));
Print("M12 Close: ", GetLastClose(PERIOD_M12));
Print("M15 Close: ", GetLastClose(PERIOD_M15));
Print("M20 Close: ", GetLastClose(PERIOD_M20));
Print("M30 Close: ", GetLastClose(PERIOD_M30));
Print("H1 Close: ", GetLastClose(PERIOD_H1));
Print("H2 Close: ", GetLastClose(PERIOD_H2));
Print("H3 Close: ", GetLastClose(PERIOD_H3));
Print("H4 Close: ", GetLastClose(PERIOD_H4));
Print("H6 Close: ", GetLastClose(PERIOD_H6));
Print("H8 Close: ", GetLastClose(PERIOD_H8));
Print("H12 Close: ", GetLastClose(PERIOD_H12));
Print("D1 Close: ", GetLastClose(PERIOD_D1));
Print("W1 Close: ", GetLastClose(PERIOD_W1));
Print("MN1 Close: ", GetLastClose(PERIOD_MN1));
}
//+------------------------------------------------------------------+
//| 特定のタイムフレームにおける終値を取得する関数 |
//+------------------------------------------------------------------+
double GetLastClose(ENUM_TIMEFRAMES timeframe)
{
double prices[];
// 価格データの配列を初期化
ArraySetAsSeries(prices,true);
// 指定したタイムフレームの最新バーの価格をコピー
int copied = CopyClose(_Symbol, timeframe, 0, 10, prices);
// コピーに成功した場合は1本前の終値を返す
if(copied > 0)
{
return(prices[1]);
}
else
{
// エラーが発生した場合は0を返す
Print("終値情報の取得に失敗しました: ", timeframe);
return(0);
}
}
このコードは、GetLastClose関数を定義し、指定されたタイムフレームの最新の終値を取得しています。
OnStart関数内で、このGetLastClose関数を呼び出して、各ENUM_TIMEFRAMESの識別子に対応する終値をMT5のエキスパートタブにログ出力しています。
※CopyClose関数は、指定されたシンボルとタイムフレームに対する終値を取得するために使用され、この例では最新の終値のみを取得しています。
また、ArraySetAsSeries関数を使用して、価格データ配列を時系列順に設定しています。これにより、prices[1]
は常に最新から1本前の終値を指すようになります。
実行結果は以下↓の通りです
————————————————————————————–
<参照>
TimeToString関数/EnumToString関数/DoubleToString関数/UNIXタイム/タイムスタンプ
datetime型/iTime関数/StringToTime関数/TimeCurrent関数/TimeToStruct関数/StructToTime関数/MqlDateTime構造体
※当サイトでは、プログラミング経験ゼロの方でも、プログラミングの基礎から学べる
をメインコンテンツとして展開しています。
第0回から、順を追って勉強していけばプログラミングの経験がなくてもMQL5を使って、MT5用のEAが作れるように書いています。最初は難しいと感じるかもしれませんが、繰り返し勉強していく事で自然とスキルが身についていくはずです。興味ある方は是非ご覧ください。
コメント