PeriodSeconds

この関数は期間中の秒数を返します。

int  PeriodSeconds(
  ENUM_TIMEFRAMES  period=PERIOD_CURRENT      // チャート期間
  );

パラメータ

period=PERIOD_CURRENT

[in] ENUM_TIMEFRAMES列挙からのチャート期間。パラメータが指定されていない場合は、プログラムが実行されている現在のチャートの期間の秒数を返します。

戻り値

選択した期間の秒数

例:

//--- 入力パラメータ
input ENUM_TIMEFRAMES InpPeriod1 = PERIOD_CURRENT;   // First Period
input ENUM_TIMEFRAMES InpPeriod2 = PERIOD_M1;       // Second Period
 
//+------------------------------------------------------------------+
//| スクリプトプログラム開始関数                                              |
//+------------------------------------------------------------------+
void OnStart()
 {
//--- InpPeriod1およびInpPeriod2チャート期間の秒数を取得する
  int sec1=PeriodSeconds(InpPeriod1);
  int sec2=PeriodSeconds(InpPeriod2);
//--- 受信した値をログに表示する
  PrintFormat("Seconds in period %s: %lu, in period %s: %lu",TimeframeDescription(InpPeriod1),sec1,TimeframeDescription(InpPeriod2),sec2);
//--- InpPeriod1のチャート期間のバーにInpPeriod2チャート期間のバーが何本含まれるかを計算する
  int res=sec1/sec2;
  if(res==0)
    res=1;
//--- 取得した値をログに表示する
  PrintFormat("One bar %s contains %d bars %s",TimeframeDescription(InpPeriod1),res,TimeframeDescription(InpPeriod2));
  /*
  結果:
  Seconds in period M5: 300, in period M1: 60
  One bar M5 contains 5 bars M1
  */
 }
//+------------------------------------------------------------------+
//| 時間枠名を返す                                                    |
//+------------------------------------------------------------------+
string TimeframeDescription(const ENUM_TIMEFRAMES period)
 {
  return(StringSubstr(EnumToString(period==PERIOD_CURRENT ? Period() : period), 7));
 }

参照

_Periodチャート時間軸日付と時刻オブジェクトの可視性