チャート期間定数 (PERIOD_H1等)

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ヶ月

おすすめの記事