この投稿文は次の言語で読めます: 日本語
MT4/MT5 では値が異なる
MT4の頃は、
- PERIOD_M30 = 30
- PERIOD_H1 = 60
のように、各チャート期間を指す数値はその時間足の分を指すように設定されていましたが、MT5からは一部変更になりました。
例えば、
- PERIOD_M30 = 30
- PERIOD_H1 = 16385
となります。チャート期間の指定について、何らかのロジックで動的に判定させる際に、
PERIOD_XX の戻り値が「分相当」で計算している場合は、それが使用できなくなります。
移行方法
MQL4からMQL5への移植 に移行用関数がありますので、そのままコピー&ペーストして
該当関数を呼び出すことで、 MT4時代に指定していた分相当の値を、チャート期間定数(ENUM_TIMEFRAMES型)で返してくれます。
関数
ENUM_TIMEFRAMES TFMigrate(int tf)
{
switch(tf)
{
case 0: return(PERIOD_CURRENT);
case 1: return(PERIOD_M1);
case 5: return(PERIOD_M5);
case 15: return(PERIOD_M15);
case 30: return(PERIOD_M30);
case 60: return(PERIOD_H1);
case 240: return(PERIOD_H4);
case 1440: return(PERIOD_D1);
case 10080: return(PERIOD_W1);
case 43200: return(PERIOD_MN1);
case 2: return(PERIOD_M2);
case 3: return(PERIOD_M3);
case 4: return(PERIOD_M4);
case 6: return(PERIOD_M6);
case 10: return(PERIOD_M10);
case 12: return(PERIOD_M12);
case 16385: return(PERIOD_H1);
case 16386: return(PERIOD_H2);
case 16387: return(PERIOD_H3);
case 16388: return(PERIOD_H4);
case 16390: return(PERIOD_H6);
case 16392: return(PERIOD_H8);
case 16396: return(PERIOD_H12);
case 16408: return(PERIOD_D1);
case 32769: return(PERIOD_W1);
case 49153: return(PERIOD_MN1);
default: return(PERIOD_CURRENT);
}
}
チャート期間定数
ENUM_TIMEFRAMES 型で定義されます。
以前の記事 でも記載した通り、指定可能な期間がかなり増えています。
ENUM_TIMEFRAMES
ID |
説明 |
PERIOD_CURRENT |
現在の時間軸 |
PERIOD_M1 |
1分 |
PERIOD_M2 |
2分 |
PERIOD_M3 |
3分 |
PERIOD_M4 |
4分 |
PERIOD_M5 |
5分 |
PERIOD_M6 |
6分 |
PERIOD_M10 |
10分 |
PERIOD_M12 |
12分 |
PERIOD_M15 |
15分 |
PERIOD_M20 |
20分 |
PERIOD_M30 |
30分 |
PERIOD_H1 |
1時間 |
PERIOD_H2 |
2時間 |
PERIOD_H3 |
3時間 |
PERIOD_H4 |
4時間 |
PERIOD_H6 |
6時間 |
PERIOD_H8 |
8時間 |
PERIOD_H12 |
12時間 |
PERIOD_D1 |
1日 |
PERIOD_W1 |
1週間 |
PERIOD_MN1 |
1ヶ月 |