CopyRates

MqlRate의 지정된 양의 지정된 기호 기간의 구조를 행렬 또는 벡터로 변환한 것의 역사적인 시리즈를 가져옵니다.. 요소는 현재부터 과거까지 카운트다운됩니다. 즉 시작 위치가 0이면 현재 바를 의미합니다.

가장 오래된 요소가 행렬/벡터의 시작 부분에 배치되도록 데이터가 복사됩니다. 세 가지 함수 옵션이 있습니다.

초기의 포지션 및 필요한 요소 수에 의한 액세스

bool  matrix::CopyRates(
   string           symbol,       // 심볼명
   ENUM_TIMEFRAMES  period,       // 주기
   ulong            rates_mask,   // 요청된 시리즈를 지정하기 위한 플래그의 조합
   ulong            start,        // ~부터 복사가 시작되는 최초 바의 인데스 
   ulong            count         // 얼마나 복사할지
   );

초기 날짜 및 필수 요소 수에 의한 액세스

bool  matrix::CopyRates(
   string           symbol,       // 심볼명
   ENUM_TIMEFRAMES  period,       // 주기
   ulong            rates_mask,   // 요청된 시리즈를 지정하기 위한 플래그의 조합
   datetime         from,         // 시작 날짜
   ulong            count         // 얼마나 복사할지
   );

요청되는 시간 간격의 초기 및 최종 날짜까지 액세스

bool  matrix::CopyRates(
   string           symbol,       // 심볼명
   ENUM_TIMEFRAMES  period,       // 주기
   ulong            rates_mask,   // 요청된 시리즈를 지정하기 위한 플래그의 조합
   datetime         from,         // 시작 날짜
   datetime         to            // 끝나는 날짜
   );

벡터 방법

초기의 포지션 및 필요한 요소 수에 의한 액세스

bool  vector::CopyRates(
   string           symbol,       // 심볼명
   ENUM_TIMEFRAMES  period,       // 주기
   ulong            rates_mask,   // 요청된 시리즈를 지정하기 위한 플래그의 조합
   ulong            start,        // ~부터 복사가 시작되는 최초 바의 인데스 
   ulong            count         // 얼마나 복사할지
   );

초기 날짜 및 필수 요소 수에 의한 액세스

bool  vector::CopyRates(
   string           symbol,       // 심볼명
   ENUM_TIMEFRAMES  period,       // 주기
   ulong            rates_mask,   // 요청된 시리즈를 지정하기 위한 플래그의 조합
   datetime         from,         // 시작 날짜
   ulong            count         // 얼마나 복사할지
   );

요청되는 시간 간격의 초기 및 최종 날짜까지 액세스

bool  vector::CopyRates(
   string           symbol,       // 심볼명
   ENUM_TIMEFRAMES  period,       // 주기
   ulong            rates_mask,   // 요청된 시리즈를 지정하기 위한 플래그의 조합
   datetime         from,         // 시작 날짜
   datetime         to            // 끝나는 날짜
   );

매개 변수

Symbol

[in]  심볼

period

[in]  주기.

rates_mask

【in】 요청된 시리즈의 유형을 지정하는 플래그의 ENUM_COPY_RATES 열거형 조합입니다. 벡터로 복사할 때 ENUM_COPY_RATES 열거형에서 하나의 값만 지정할 수 있으며 그렇지 않으면 오류가 발생합니다.

start

[in]처음 복사된 요소 인덱스.

count

[in】 복사된 요소의 수

from

【in】 첫 번째 요소에 해당하는 바 시간입니다.

to

【in】 마지막 요소에 해당하는 막대 시간입니다.

반환값

성공하면 true를 반환하고 그렇지 않고 오류.이면 false를 반환합니다.

참조

요청된 데이터의 간격이 서버에서 사용 가능한 데이터를 완전히 벗어나면 함수는 다음을 반환합니다.false. 데이터가 외부에 있는 경우TERMINAL_MAXBARS (차트의 최대 바의 수)가 요청되면 함수도 다음을 반환합니다.false.

EA 또는 스크립트에서 데이터를 요청할 때,서버에서 다운로드는 터미널에 로컬에 적절한 데이터가 없는 경우 시작되거나 로컬 기록에서 데이터를 구성할 수 있지만 아직 준비되지 않은 경우 필요한 시계열 구성이 시작됩니다. 함수는 제한 시간이 만료될 때까지 준비될 양을 반환하지만 기록 다운로드는 계속되고 함수는 이후 유사한 요청 중에 더 많은 데이터를 반환합니다.

시작 날짜와 필요한 항목 수로 데이터를 요청할 경우 (전에) 지정된 날짜보다 이전 또는 같은 날짜의 데이터만 반환됩니다. 인터벌이 설정되고 최대 1초로 간주됩니다. 즉, 값이 반환되는 바(볼륨, 스프레드, 시가, 고가, 저가, 종가 또는 시간)의 개장일은 항상 지정된 날짜보다 작거나 같습니다.

지정된 날짜 범위의 데이터를 요청할 때 요청된 인터벌에 해당하는 데이터만 반환됩니다. 인터벌이 설정되고 최대 1초로 간주됩니다. 즉, 값이 반환되는 바(볼륨, 스프레드, 인디케이터 버퍼 값, 시가, 고가, 저가, 종가 또는 시간)의 시작 시간은 항상 요청된 인터벌에 있습니다.

예를 들어 현재 요일이 토요일인 경우 설정을 통해 주간 시간대에 데이터 복사를 시도하면 함수는 0을 반환합니다.start_time=마지막_화요일 그리고stop_time=Last_Friday 주간 시간대의 개장 시간은 항상 일요일이지만 지정된 범위에 속하는 주간 바는 하나도 없기 때문입니다.

현재 완성되지 바에 해당하는 값을 가져와야 하는 경우 다음을 나타내는 첫 번째 호출 형식을 사용할 수 있습니다. start_pos=0 및count=1.

ENUM_COPY_RATES

ENUM_COPY_RATES 열거형에는 행렬 또는 배열에 전달할 데이터 유형을 지정하는 플래그가 포함되어 있습니다. 플래그 조합을 사용하면 하나의 요청으로 히스토리에서 여러 시리즈를 가져올 수 있습니다. 행렬의 행 순서는 ENUM_COPY_RATES 열거형의 값 순서와 일치합니다. 즉, 높은 데이터가 있는 행은 낮은 데이터가 있는 행보다 매트릭스에서 항상 더 높습니다.

ID

Value

설명

COPY_RATES_OPEN

1

시가 시리즈

COPY_RATES_HIGH

2

고가 시리즈

COPY_RATES_LOW

4

저가 시리즈

COPY_RATES_CLOSE

8

종가 시리즈

COPY_RATES_TIME

16

타임 시리즈 (바 오픈 시간)

 

벡터와 행렬(vectord 및 matrixf)의 float에서 시간을 얻으면 ~100초의 손실을 초래합니다. 왜냐하면 float 정확도는 상당히 제한되며 1<<24보다 큰 정수는 float로 정확하게 표현할 수 없기 때문입니다.

COPY_RATES_VOLUME_TICK

32

틱 볼륨

COPY_RATES_VOLUME_REAL

64

트레이드 볼륨

COPY_RATES_SPREAD

128

스프레드

조합

 

 

COPY_RATES_OHLC

15

시가, 고가, 저가, 종가 시리즈

COPY_RATES_OHLCT

31

시가, 고가, 저가, 종가 시리즈

데이터 정렬

 

 

COPY_RATES_VERTICAL

32768

계열은 세로 축을 따라 행렬에 복사됩니다. 수신된 계열 값은 행렬에서 수직으로 정렬됩니다. 즉, 가장 오래된 데이터가 첫 번째 행에 있고 가장 최근 데이터가 마지막 행렬 행에 있습니다.

 

기본 복사를 사용하면 시리즈가 가로 축을 따라 행렬에 추가됩니다.

 

플래그는 행렬에 복사할 때만 적용 가능합니다.

예:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
 {
//---행렬에 쿼트 얻기
  matrix matrix_rates;
  if(matrix_rates.CopyRates(Symbol(), PERIOD_CURRENTCOPY_RATES_OHLCT110))
    Print("matrix rates: \n"matrix_rates);
  else
    Print("matrix_rates.CopyRates failed. Error "GetLastError());
//--- 확인
  MqlRates mql_rates[];
  if(CopyRates(Symbol(), PERIOD_CURRENT110mql_rates)>0)
   {
    Print("mql_rates array:");
    ArrayPrint(mql_rates);
   }
  else
    Print("CopyRates(Symbol(), PERIOD_CURRENT,1, 10, mql_rates). Error "GetLastError());
//--- 벡터로 쿼트 가져오기 = 잘못된 호출
  vector vector_rates;
  if(vector_rates.CopyRates(Symbol(), PERIOD_CURRENTCOPY_RATES_OHLC115))
    Print("vector_rates COPY_RATES_OHLC: \n"vector_rates);
  else
    Print("vector_rates.CopyRates COPY_RATES_OHLC failed. Error "GetLastError());
//--- 종가를 벡터로 가져옵니다.
  if(vector_rates.CopyRates(Symbol(), PERIOD_CURRENTCOPY_RATES_CLOSE115))
    Print("vector_rates COPY_RATES_CLOSE: \n"vector_rates);
  else
    Print("vector_rates.CopyRates failed. Error "GetLastError());
 };
/*
   matrix rates:
   [[0.99686,0.99638,0.99588,0.99441,0.99464,0.99594,0.99698,0.99758,0.99581,0.9952800000000001]
    [0.99708,0.99643,0.99591,0.9955000000000001,0.99652,0.99795,0.99865,0.99764,0.99604,0.9957]
    [0.9961100000000001,0.99491,0.99426,0.99441,0.99448,0.99494,0.9964499999999999,0.99472,0.9936,0.9922]
    [0.99641,0.99588,0.99441,0.99464,0.99594,0.99697,0.99758,0.99581,0.9952800000000001,0.99259]
    [1662436800,1662440400,1662444000,1662447600,1662451200,1662454800,1662458400,1662462000,1662465600,1662469200]]
   mql_rates array:
                    [time]  [open]  [high]   [low] [close] [tick_volume] [spread] [real_volume]
   [02022.09.06 04:00:00 0.99686 0.99708 0.99611 0.99641          4463        0             0
   [12022.09.06 05:00:00 0.99638 0.99643 0.99491 0.99588          4519        0             0
   [22022.09.06 06:00:00 0.99588 0.99591 0.99426 0.99441          3060        0             0
   [32022.09.06 07:00:00 0.99441 0.99550 0.99441 0.99464          3867        0             0
   [42022.09.06 08:00:00 0.99464 0.99652 0.99448 0.99594          5280        0             0
   [52022.09.06 09:00:00 0.99594 0.99795 0.99494 0.99697          7227        0             0
   [62022.09.06 10:00:00 0.99698 0.99865 0.99645 0.99758         10130        0             0
   [72022.09.06 11:00:00 0.99758 0.99764 0.99472 0.99581          7012        0             0
   [82022.09.06 12:00:00 0.99581 0.99604 0.99360 0.99528          6166        0             0
   [92022.09.06 13:00:00 0.99528 0.99570 0.99220 0.99259          6950        0             0
   vector_rates.CopyRates COPY_RATES_OHLC failedError 4003
   vector_rates COPY_RATES_CLOSE:
   [0.9931,0.99293,0.99417,0.99504,0.9968399999999999,0.99641,0.99588,0.99441,0.99464,0.99594,0.99697,0.99758,0.99581,0.9952800000000001,0.99259]
*/

또다른 참조

시계열 및 지표에 대한 액세스,CopyRates