Bars

지정된 심볼 및 기간에 대한 기록의 막대 수를 반환합니다. 함수 호출에는 두 가지 종류가 있습니다.

모든 내역 막대 요청

int  Bars(
   string           symbol_name,     // 심볼명
   ENUM_TIMEFRAMES  timeframe        // 기간
   );

선택한 시간 간격에 대한 내역 막대 요청

int  Bars(
   string           symbol_name,     // 심볼명
   ENUM_TIMEFRAMES  timeframe,       // 주기
   datetime         start_time,      // 시작 일시
   datetime         stop_time        // 종료 일시
   );

Parameters

symbol_name

[in]  심볼명.

timeframe

[in]  주기.

start_time

[in]  첫 번째 요소에 해당하는 막대 시간.

stop_time

[in]  마지막 요소에 해당하는 막대 시간.

반환 값

start_time 및 stop_time 매개 변수가 정의된 경우 함수는 지정된 시간 간격의 막대 수를 반환하고, 그렇지 않은 경우 전체 막대 수를 반환합니다.

참고

지정된 파라미터가 있는 시계열 데이터가 Bars() 함수 호출 시간까지 터미널에 형성되지 않거나 함수 호출 순간까지 시계열 데이터가 거래 서버와 동기화되지 않으면 함수는 0 값을 반환합니다.

지정된 시간 간격의 막대 수를 요청할 때는 해당 간격 내에 속하는 열린 시간이 있는 막대만 고려됩니다. 예를 들어, 현재 요일이 토요일이고 start_time=last_tuesday 및 stop_time=last_friday인 W1 바의 수에 대해 요청이 이루어진 경우, W1 기간의 열린 시간이 항상 일요일이고 지정된 간격 내에 있지 않기 때문에 함수는 0을 반환합니다.

모든 기록 막대의 개수에 대한 샘플 요청:

   int bars=Bars(_Symbol,_Period);
   if(bars>0)
     {
      Print("현재 심볼 주기에 대한 터미널 기록의 막대 수 = ",bars);
     }
   else  //사용가능한 막대 없음
     {
      //--- 심볼의 데이터가 서버의 데이터와 동기화되지 않을 수 있음
      bool synchronized=false;
      //--- 루프 카운터
      int attempts=0;
      // 동기화 대기 시간 5회 시도
      while(attempts<5)
        {
         if(SeriesInfoInteger(Symbol(),0,SERIES_SYNCHRONIZED))
           {
            //--- 동기화 완료, 종료
            synchronized=true;
            break;
           }
         //--- 카운터 증가
         attempts++;
         //--- 다음 반복까지 10밀리초 대기
         Sleep(10);
        }
      //--- 동기화 후 루프 종료
      if(synchronized)
        {
         Print("현재 심볼 주기에 대한 터미널 기록의 막대 수 = ",bars);
         Print("현재 심볼 기간의 터미널 기록에서 첫 번째 날짜 = ",
               (datetime)SeriesInfoInteger(Symbol(),0,SERIES_FIRSTDATE));
         Print("서버의 심볼에 대한 기록의 첫 번째 날짜 = ",
               (datetime)SeriesInfoInteger(Symbol(),0,SERIES_SERVER_FIRSTDATE));
        }
      //--- 데이터 동기화가 일어나지 않음
      else
        {
         Print("다음을 위한 막대 수를 가져오는 데 실패",_Symbol);
        }
     }

지정된 간격의 막대 수에 대한 샘플 요청:

   int n;
   datetime date1 = D'2016.09.02 23:55'// 금요일
   datetime date2 = D'2016.09.05 00:00'// 월요일
   datetime date3 = D'2016.09.08 00:00'// 목요일
   //---
   n=Bars(_Symbol,PERIOD_H1,D'2016.09.02 02:05',D'2016.09.02 10:55');
   Print("막대 수: ",n); // 출력: "막대 수: 8", H2 막대 is는 연산에서 고려되지만 H11은 그렇지 않습니다
   n=Bars(_Symbol,PERIOD_D1,date1,date2);
   Print("막대 수: ",n); // 출력: "막대 수: 1", 단일 D1 (월요일) 막대의 오픈 시간이 간격 내에 있으므로
   n=Bars(_Symbol,PERIOD_W1,date2,date3);
   Print("막대 수: ",n); // 출력: "막대 수: 0", 단일 W1 바 오픈 시간이 지정된 간격 내에 속하지 않으므로

더 보기

이벤트 처리 함수